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サウンドも鳴りました。スレッドにスリープを追加しようとしましたが (SMS アプリをバックグラウンドで再生できるようにするため)、音量が回復するのを待ってから着信音を再生します。

最初に私はこれを試しました:

 RingtoneManager.setActualDefaultRingtoneUri(...)

ただし、アプリの設定は上書きされません。SMS アプリで着信音が選択されたときの通知音のみが上書きされます。

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 に答える