Android - Рингтон не перестает играть

В настоящее время я запускаю рингтон на Android, и он воспроизводится нормально.

Однако, когда я пытаюсь остановить рингтон, он не останавливается или, по крайней мере, не останавливается сразу, он будет продолжать играть, пока не закончится.

Вот как я настроил рингтон:

int rm = audio_service.getRingerMode();
int vs = audio_service.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);

android.os.Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

if ((rm == AudioManager.RINGER_MODE_VIBRATE ||
    (rm == AudioManager.RINGER_MODE_NORMAL && vs == AudioManager.VIBRATE_SETTING_ON)))
            v.vibrate(vibratePattern,1);

if (audio_service.getStreamVolume(AudioManager.STREAM_RING) > 0) {                          

    oRingtone = RingtoneManager.getRingtone(this, Settings.System.DEFAULT_RINGTONE_URI);
    oRingtone.setStreamType(AudioManager.STREAM_RING);
    oRingtone.play();       

    }

И вот как я пытаюсь это остановить

if (CallDialogActivity.oRingtone != null) {
      Log.d("RINGTONE", "Into Ringtone if");
      Ringtone ringtone = CallDialogActivity.oRingtone;
      oRingtone = null;
      ringtone.stop();
}

Кто-нибудь сталкивался с подобными проблемами или видел ошибки в моем коде?

РЕДАКТИРОВАТЬ:

Просто чтобы добавить, я добавил ведение журнала, чтобы увидеть, возвращает ли ringtone.isPlaying() true или false после того, как я вызываю ringtone.stop(), и он возвращает false, однако тон продолжает воспроизводиться в течение нескольких секунд (3-5 секунд) после перед остановка


person Donal Rafferty    schedule 26.02.2010    source источник
comment
я думаю, будет лучше, если вы сначала остановите рингтон, прежде чем устанавливать его на ноль. ringtone.stop() действительно работает для меня.   -  person artsylar    schedule 22.12.2011


Ответы (1)


Для всех, кто сталкивается с этим:

Мне пришлось использовать менеджер RingTone, чтобы остановить рингтон.

Добавление следующей строки отсортировало это

ringtoneManager.stopPreviousRingtone();
person Donal Rafferty    schedule 11.03.2010