如何覆盖短信铃声
问题描述:
我想要做什么: 要将我的铃声设置为传入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
声音太响了起来。 我试图给线程增加一些睡眠(让短信应用在后台播放),但它只是等待音量恢复,然后播放铃声。
起初,我尝试这样:
RingtoneManager.setActualDefaultRingtoneUri(...)
但它不会覆盖应用程序设定,只覆盖时,在短信应用选择铃声通知声音。
答
对我来说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);
+0
我已经尝试过那。问题是,当你在sms-app中选择铃声时,这不起作用。它只覆盖通知的默认设置(如果没有在sms-app中选择,则为sms) – PetrD 2013-02-28 06:43:06
希望这个[链接](http://*.com/questions/1271777/how-to-set-ringtone-in-android-from-my-activity)将帮助你:) – 2013-02-27 08:19:29