我们直接看代码
bt1 = (Button) findViewById(R.id.bt1); bt2 = (Button) findViewById(R.id.bt2); bt3 = (Button) findViewById(R.id.bt3); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //获得手机提示音 if (mNotificationUri_notify == null) { mNotificationUri_notify = RingtoneManager .getActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_NOTIFICATION); } if (mNotificationUri_notify != null && mRingtone_notify == null) { String string = mNotificationUri_notify.toString(); tv.setText(string); mRingtone_notify = RingtoneManager.getRingtone( getApplicationContext(), mNotificationUri_notify); } if (mRingtone_notify != null) { if (mRingtone_notify.isPlaying()) { mRingtone_notify.stop(); } else { mRingtone_notify .setStreamType(AudioManager.STREAM_NOTIFICATION); mRingtone_notify.play(); } } } }); bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //获得手机来电铃声 if (mNotificationUri_telephone == null) { mNotificationUri_telephone = RingtoneManager .getActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE); } if (mNotificationUri_telephone != null && mRingtone_telephone == null) { mRingtone_telephone = RingtoneManager .getRingtone(getApplicationContext(), mNotificationUri_telephone); } if (mRingtone_telephone != null) { if (mRingtone_telephone.isPlaying()) { mRingtone_telephone.stop(); } else { mRingtone_telephone .setStreamType(AudioManager.STREAM_RING); mRingtone_telephone.play(); } } } }); bt3.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (mNotificationUri_alarm == null) { //获得手机闹钟铃声 mNotificationUri_alarm = RingtoneManager .getActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_ALARM); } if (mNotificationUri_alarm != null && mRingtone_alarm == null) { mRingtone_alarm = RingtoneManager.getRingtone( getApplicationContext(), mNotificationUri_alarm); } if (mRingtone_alarm != null) { if (mRingtone_alarm.isPlaying()) { mRingtone_alarm.stop(); } else { mRingtone_alarm .setStreamType(AudioManager.STREAM_ALARM); mRingtone_alarm.play(); } } } });
上面的代码就是获得手机三个铃声的代码。
其实,获得手机铃声的操作也很简单。
它主要就涉及两个类
1.RingtoneManager-铃声管理类
2.Ringtone-铃声操作类
基本上就是三个步骤
1.获得Uri
获得Uri的方法,需要传入一个参数 RingtoneManager.TYPE_NOTIFICATION(STREAM_NOTIFICATION..)就是
这个参数决定了我们获得的是何种提示音
2.获得Ringtone
获得它的方法需要把第一步得到的Uri传进来,就可以得到相应的铃声了
3.操作铃声
直接只用play() stop()控制铃声的停止跟播放。
上面有一个方法
mRingtone_alarm.setStreamType(AudioManager.STREAM_ALARM);
说是设置音频流的,这个音频流到底是什么东西,也不懂,就看到有人说
Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类 的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合 (Mixer),然后输送到AudioHardware中进行播放。AudioTrack和AudioFlinger的通信机制通 常,AudioTrack和AudioFlinger并不在同一个进程中,它们通过android中的binder机制建立联系。
自己查了下资料,感觉应该就是控制什么音频解析的吧