代码之家  ›  专栏  ›  技术社区  ›  Donal Rafferty

安卓-铃声不会停止播放

  •  5
  • Donal Rafferty  · 技术社区  · 15 年前

    我目前在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()在调用ringtone.stop()后返回true或false,它返回false,但是在停止之前,铃声会持续播放几秒钟(3-5秒)。

    1 回复  |  直到 15 年前
        1
  •  6
  •   Donal Rafferty    15 年前

    对于任何遇到这种情况的人:

    我必须使用铃声管理器来帮助停止铃声。

    添加下一行将其排序

    ringtoneManager.stopPreviousRingtone();