为什么.ogg文件循环?

时间:2014-11-14 16:00:24

标签: 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文件,但很好奇为什么会发生这种情况,如果可能的话阻止它们循环。

1 个答案:

答案 0 :(得分:1)

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

Google代码中的相关票证:

MediaPlayer setLooping(false) does not work for ogg files

Should document ANDROID_LOOP flag for OGG files

您可以尝试使用MediaPlayer.setLooping(false)来查看它是否可以提供帮助