只播放一次警报声

时间:2012-09-11 11:12:54

标签: android

我有一个工作闹钟应用程序,但想要添加一个功能,用户可以选择“连续播放闹钟直到确认”和“播放一次闹铃声”。

然后我看着我的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!
    }
}

1 个答案:

答案 0 :(得分: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);