2012-09-11 141 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);