2010-02-26 3 views
5

Je commence actuellement une sonnerie sur Android et il joue bien. Toutefois, lorsque j'essaie d'arrêter la sonnerie, elle ne s'arrête pas ou au moins ne s'arrête pas immédiatement, elle continuera à jouer jusqu'à ce qu'elle se déclenche.Android - Sonnerie ne cesse pas de jouer

Voici comment configurer la sonnerie:

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

    } 

Et voici comment j'essaie de l'arrêter

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

Quelqu'un at-il rencontré des problèmes similiar ou voir des erreurs dans mon code?

EDIT:

Juste pour ajouter que je l'ai ajouté l'enregistrement pour voir si ringtone.isPlaying() retourne vrai ou faux après que je l'appelle ringtone.stop() et il retourne faux, mais le ton continue à jouer pour un couple secondes (3 - 5 secondes) après l'arrêt avant

+0

je pense qu'il vaut mieux si vous arrêtez la sonnerie avant de le mettre à null. ringtone.stop() fonctionne réellement pour moi. – artsylar

Répondre

6

pour toute personne qui vient à travers ceci:

je devais utiliser le gestionnaire de ringTone pour aider à arrêter la sonnerie.

ajoutant la ligne suivante résoudre notre problème

ringtoneManager.stopPreviousRingtone();