我想做什么:
要将我的铃声设置为传入SMS
,即使SMS app
中有另一个。
我尝试了什么:
在SMS reciever
中,我设置了STREAM_NOTIFICATION to 0
的音量,并尝试通过MediaPlayer
播放我的铃声作为媒体。
所以基本上是这样的:
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 0);
MediaPlayer mp = MediaPlayer.create(context, notifUri);
mp.start();
int duration = mp.getDuration() + 3000; //Margin
try {
Thread.sleep(duration);
} catch (InterruptedException e) {
}
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, beforOverrideNotifVol, 0);
发生了什么:
我的自定义铃声播放但在此之后,sms-app
声音也响了。
我试图为线程增加一些睡眠(让sms-app在后台播放)但它只是等待音量恢复然后播放它的铃声。
起初我试过这个:
RingtoneManager.setActualDefaultRingtoneUri(...)
但它不会覆盖应用程序设置,只会在sms-app中选择铃声时覆盖通知声音。
答案 0 :(得分:0)
对我来说,Ringtonemanger.setDefaultRingtoneUri工作
尝试使用此选项来选择铃声,然后设置
private void chooseTone(int Id) {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
MainActivity.this.startActivityForResult(intent, NotificationId);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (resultCode == Activity.RESULT_OK) {
Uri uri = intent
.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
Log.d(TAG, "Notification Tone: " + uri);
if (uri != null)
this.chosenRingtone = uri;
}}
然后最终设置铃声 RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE,selectedRingtone);