2010-02-26 15 views
5

Obecnie uruchamiam dzwonek na Androida i gra się dobrze.Android - Ringtone nie przestanie grać

Jednak gdy próbuję zatrzymać dzwonek, nie przestaje, lub co najmniej nie zatrzymuje się od razu, będzie odtwarzać, dopóki nie zacznie grać.

Oto jak skonfigurować dzwonka

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

    } 

A oto jak próbuję go zatrzymać

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

ktoś natknąć się podobne problemy lub widzę żadnych błędów w mój kod?

EDIT:

Wystarczy dodać Dodałem rejestrowanie aby zobaczyć czy ringtone.isPlaying() zwraca true lub false po Wzywam ringtone.stop() i zwraca wartość false, jednak ton wciąż gra dla pary sekund (3 - 5 sekundach), po przed zatrzymaniem

+0

myślę, że lepiej jeśli przestaniesz pierwszy dzwonek przed ustawieniem go na null. ringtone.stop() faktycznie działa dla mnie. – artsylar

Odpowiedz

6

dla każdego, kto jest po drugiej stronie to:

musiałem użyć menedżera dzwonek, aby pomóc zatrzymać dzwonek.

dodając następującą linię to załatwili

ringtoneManager.stopPreviousRingtone(); 
Powiązane problemy