android - 为什么 .ogg 文件循环?

标签 android android-mediaplayer ogg

在下面的类中触发了 .ogg 文件的播放。

public class HomeScreenFragment extends Fragment {
    ...
    private AudioPlayer mPlayer = new AudioPlayer();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        ...
        mStandbyButton = (Button)v.findViewById(R.id.standby_button);
        mStandbyButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mPlayer.play(getActivity());
            }
        });
    }

    public void onDestroy() {
        super.onDestroy();
        mPlayer.stop();
    }
}

尽管使用了 setOnCompletionListener(),但与 .wav 不同,文件会继续循环

public class AudioPlayer {
    private MediaPlayer mPlayer;

    public void stop() {
        if(mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }

    public void play(Context c) {
        stop();

        mPlayer = MediaPlayer.create(c, R.raw.hassium);
        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                stop();
            }
        });
        mPlayer.start();
    }
}

如何确保播放完成后它们不会循环播放? 我可能会使用 .wav 文件,但很好奇为什么会发生这种情况,以及是否可能阻止它们循环播放。

最佳答案

搜索发现在ogg元数据中可能存在ANDROID_LOOP:ANDROID_LOOP = true -- how to avoid MediaPlayer looping audios with this metadata tag

谷歌代码中的相关工单:

MediaPlayer setLooping(false) does not work for ogg files

Should document ANDROID_LOOP flag for OGG files

您可以尝试使用 MediaPlayer.setLooping(false) 看看是否有帮助

关于android - 为什么 .ogg 文件循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26933988/

相关文章:

android 以编程方式设置具有自定义颜色和圆角的按钮

android - MediaPlayer 的 prepareAsync 似乎在 Android 9 上停止工作

android - 如何同时启动两个媒体播放器(并同步播放)?

html - 如何为媒体文件生成带有编解码器的内容类型字符串?

android - Android 4 中声音的不同行为

Android:ScrollView 'setOnScrollListener'(类似于 ListView)

android - RTMP 对比 HLS 对比 HDS

Android Robotium - ViewPager 滑动不工作

Android:使用默认音乐播放器播放歌曲文件

html - 为什么大多数音频src标签都使用ogg和mp3