0

我想做的事:将我的铃声设置为来电,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(...)

但它不会覆盖应用程序设置,它只会在短信应用程序中选择铃声时覆盖通知声音。

4

1 回答 1

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);

于 2013-02-27T08:14:15.973 回答