我有一个工作闹钟应用程序,但想要添加一个功能,用户可以选择“连续播放闹钟直到确认”和“播放一次闹铃声”。
然后我看着我的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!
}
}
答案 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);