2012-09-11 187 views
1

我有一個鬧鐘應用程序,但是想要添加一個功能,用戶可以在「連續播放鬧鈴直到確認」和「播放鬧鈴聲音一次」之間進行選擇。只播放鬧鐘聲音

然後我看着我的alrm響鈴代碼,希望看到某種「重複」標誌,我可以選擇刪除 - 但沒有。那麼,我該如何只播放一次鬧鈴?

我現有的代碼如下所示:

private void playSound(Context context, Uri alert) 
{ 
    mMediaPlayer = new MediaPlayer(); 
    try 
    { 
     mMediaPlayer.setDataSource(context, alert); 
     final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
     if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) 
     { 
      mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
      mMediaPlayer.prepare(); 
      mMediaPlayer.start(); 
     } 
    } 
    catch (IOException e) 
    { 
     // oops! 
    } 
} 

回答

3

其實每個報警聲音中有一種名爲ANDROID_LOOP標誌,它迫使你的聲音循環。不幸的是,即使使用MediaPlayer.setLooping(false),您也無法更改該標誌。 但是你仍然可以在一段時間後手動停止你的播放器。例如getDuration會給你你的聲音的長度。

int duration = mMediaPlayer.getDuration(); 

Runnable stopSoundRunnable = new Runnable() { 

      @Override 
      public void run() { 
        mMediaPlayer.stop(); 
      } 
     }; 

mSoundHanlder.postDelayed(stopSoundRunnable, duration);