5

私の Android アプリケーションでは、アクティビティの現在のデフォルトの着信音 onCreate を再生しようとしています。しかし、着信音は完全に再生されるだけではなく、毎回任意の長さで停止します。

コードは可能な限り単純です。どんな助けもいただければ幸いです。

Uri currentUri = RingtoneManager.getActualDefaultRingtoneUri(this.context, 
    RingtoneManager.TYPE_RINGTONE);
Ringtone ringtone = RingtoneManager.getRingtone(this.context,currentUri);
if (ringtone != null){
    ringtone.play();
}
4

2 に答える 2

0

私は TYPE_NOTIFICATION を使用していますが、私のコードは多かれ少なかれまったく同じでした。

私の場合、新しい Handler 内でサウンドを再生すると効果的であることがわかりました。

        Uri currentUri = RingtoneManager.getActualDefaultRingtoneUri(
                this.context, RingtoneManager.TYPE_RINGTONE);
        final Ringtone ringtone = RingtoneManager.getRingtone(this.context,
                currentUri);
        if (ringtone != null) {
            new Handler().post(new Runnable() {

                @Override
                public void run() {
                    ringtone.play();
                }
            });
        }

なぜこれで問題が解決したのですか?

RingtoneManager は UI スレッドを使用してサウンドを再生する可能性があるため、UI スレッドが使用されてビューの作成/描画、またはサウンドの再生と同時に計算が行われると、中断されるリスクがあります。

新しいハンドラーを使用すると、再生は他の操作が終わるまでキューに入れられ、サウンドが途切れることはありません。

少なくともそれが私の認識です: post メソッドは正確に何をしますか?

于 2013-12-12T19:48:09.257 に答える