android MediaPlayer循环

标签 android media-player

我正在尝试播放一个循环的 Ogg 文件,我尝试启用 setLooping(true) 但没有效果所以我尝试了 onCompletionListener 但它也不起作用,可以有人澄清我做错了什么吗?

musicPlayer = MediaPlayer.create(mContext, R.raw.overworld);
musicPlayer.setVolume(musicVolume, musicVolume);
// musicPlayer.setLooping(true);

musicPlayer.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        musicPlayer.stop();
        musicPlayer.seekTo(0);
        musicPlayer.start();
        Log.d("Sound Manager", "Song Completed");
    }
});

以下是我的播放功能,

public void playSong(int id) {
    try {
        stopSong();
        musicPlayer = MediaPlayer.create(mContext, id);                                               
        musicPlayer.start(); 
    } catch(Exception e) {
        // Ignored
    }
}

最佳答案

众所周知,MediaPlayer 在处理 ogg 文件时存在问题。 您最好切换到另一种文件格式。

另一件事是,我会继续尝试使用 setLooping(boolean),因为它很可能使用相同的方案并且更加清晰。

如果 MediaPlayer 对象停止,则调用 seekTo() 会导致 MediaPlayer 处于无效状态。您可以改为调用 pause() 但我不会调用任何这些方法,为什么不直接寻找呢?我猜想如果您删除 musicPlayer.stop() 它将起作用。

关于android MediaPlayer循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717314/

相关文章:

android - 支持 FinishAfterTransition() 时 ScaleType 崩溃

android - ListFragment 与 ListActivity - 使用哪一个?

android - 更改 MediaPlayer URI

android - 如何在准备时释放媒体播放器

android - 通过 ExoPlayer 或其他选项播放多个音频文件?

android - Android MediaPlayer无法在线播放音频文件,但如果从本地加载相同的文件则可以很好地工作

Android MediaPlayer,是否支持渐进式下载音频?

java - 使用 AsyncTask 实现启动屏幕后强制关闭

Android:自动启动问题导致未收到推送通知

java - Android 是否包含类似于 java.awt.geom 的库?