android - 仅播放一次声音

标签 android audio notifications android-mediaplayer

我正在尝试只播放一次闹钟声音:

    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);

    final MediaPlayer mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setDataSource(ctx, notification);
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
    mMediaPlayer.prepare();
    mMediaPlayer.setLooping(false);

    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        public void onPrepared(MediaPlayer arg0) {
            mMediaPlayer.seekTo(0);
            mMediaPlayer.start();
        }
    });

尽管“setLooping”设置为 false,但声音会无休止地播放。 我还能做什么来让声音不循环播放?

最佳答案

通话:

mMediaPlayer.prepare();

是对文件的阻塞调用,因此您实际上不需要监听器,您只需调用:

mMediaPlayer.start();

就在它之后。 而且它从时间 0 开始,所以你不需要:

mMediaPlayer.seekTo(0);

关于无限播放,您可以在这里找到解释和解决方案:

android mediaplayer loops forever on ICS

关于android - 仅播放一次声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365768/

相关文章:

android - 应用程序未运行时的 BroadcastReceiver

java - 在 TextView 中显示列的名称

c++ - 在 iOS 应用程序中从 C++ 通知 UI

android - Toast 通知未显示在 Nexus 7 平板电脑上

android - 如何在广播接收器中设置闹钟

android - Github 双作者 一个开发者

java - 在 Canvas 上绘制一个缩放的位图?

javascript - Chrome不会使用我的预加载音频。它不断请求相同的文件

iOS CoreMIDI 跳过 MidiPackets

HTML5 桌面通知