1

RingtonePreference で RingtoneManager を使用しています。デフォルトの着信音を使用するときは問題ありませんが、構成済みの着信音を使用すると数分間再生されます...曲の長さが数分なのか、ループ再生されるのかわかりません...

ここに私のコード:

private static void playNotificationSound(Context context) {
    RingtoneManager rm  = new RingtoneManager(context);
    String ringtone = MySharedPreferences.ringtone(context);
    Uri uri = null;
    if(ringtone == null)
        uri = RingtoneManager
            .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    else
        uri = Uri.parse(ringtone);
    if (uri != null) {
        Ringtone rt = RingtoneManager.getRingtone(context, uri);
        if (rt != null) {
            rt.setStreamType(AudioManager.STREAM_NOTIFICATION);
            rt.play();
        }
    }
}

通知付きの曲を再生するために使用していますが、電話で5分間再生したくありません...

4

3 に答える 3

1

次の行を追加してみてください。

ringtoneManager.stopPreviousRingtone();
于 2012-11-22T12:19:24.430 に答える
0

別の解決策を見つけました。notification.sound=uri;を設定しました。そして、RingtoneManagerをもう使用しないでください。

通知付き.flags|= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONLY_ALERT_ONCE;

しかし、曲はまだループで再生されます。多分着メロは本当に5分の長さですか?または、着信音をループソングとして設定することは可能ですか?

于 2012-11-22T10:21:30.427 に答える
0

このようなスレッドを使用できますか?

if (rt != null) {
                rt.setStreamType(AudioManager.STREAM_NOTIFICATION);

                rt.play();
            }

            Thread myThread = new Thread() {

                int wait = 0;

                @Override
                public void run() {
                    try {
                        super.run();

                        while (wait < 5000) {
                            sleep(500);
                            wait += 500;
                        }
                    } catch (Exception e) {

                    } finally {
                        if (rt.isPlaying())
                            rt.stop();

                    }
                }
            };
            myThread.start();
于 2012-11-22T09:37:24.013 に答える