Android媒体播放器MP3选择性循环

Android媒体播放器MP3选择性循环,android,mp3,media-player,Android,Mp3,Media Player,这可能吗?在我的特定应用程序中,配乐有一个介绍,在应用程序启动时只应播放一次。然后音乐将过渡到“主曲目”(当然是一个MP3),但当曲目结束时,它应该只循环回到介绍结束时的点,即不再播放介绍 一个更常见的例子是一首普通的歌曲,它从开场白开始,然后播放歌曲,然后在结尾循环合唱以逐渐消失 我只能找到将实际循环设置为on或off的方法- musicPlayer.setLooping(true); //No way to set loop points?! 在下图中,循环由虚线表示 有什么想法吗 创建一

这可能吗?在我的特定应用程序中,配乐有一个介绍,在应用程序启动时只应播放一次。然后音乐将过渡到“主曲目”(当然是一个MP3),但当曲目结束时,它应该只循环回到介绍结束时的点,即不再播放介绍

一个更常见的例子是一首普通的歌曲,它从开场白开始,然后播放歌曲,然后在结尾循环合唱以逐渐消失

我只能找到将实际循环设置为on或off的方法-

musicPlayer.setLooping(true); //No way to set loop points?!
在下图中,循环由虚线表示

有什么想法吗


创建一个助手方法,以获取主曲目的
起始位置,并在整个曲目(简介+主曲目)结束后
seekTo()
该位置。
使用标志了解这是否是第一次。如果不是,则返回到获得的寻道位置

     public int getMainAudioStartingPosition() {
           // position value in int.
           return MAIN_AUDIO_STARTING_POSITION;
     }  
创建另一个播放媒体的方法,该方法将
startPosition
作为输入参数。在完成整个音频文件时调用此方法,每次调用时,它都会返回到主音频的起始位置

    public void playMedia(int startPos) {
        startPos = startPos * 1000;
        mMediaPlayer.seekTo(startPos);
        isAlreadyPlayed = true;
        mMediaPlayer.start();
    }
因此,您的
onCompletionListener
将如下所示

        // register onCompletionListener for looping back
        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                // if this is already played then start from starting pos of Main audio
                if (isAlreadyPlayed) {
                    playMedia(getMainAudioStartingPosition());
                }
            }
        });
这样,您可以通过使用
onCompletionListener
并反复播放媒体文件来设置循环


希望对你有帮助

> P>不使用C++库,或者JUS/P>不能平滑地循环音频,为什么不在两个MP3文件中分割?是的,Luiz,但我要问的是我如何无缝地进行这个操作?也就是说,检测一个已完成,以便我可以启动另一个?如果您有两个单独的mp3文件,一个带有简介,另一个带有主曲目,您需要做的是为简介mp3设置CompletionListener,当它完成时,您启动主曲目。我明白了,我没想到-我会调查的-谢谢!好的,如果你在这方面需要帮助,请告诉我。;)您好@PavitraKansara,谢谢,这确实有效,但这(以及我在onCompletion中启动任何媒体播放器时使用的任何其他方法)会导致循环重新启动之前的轻微延迟-可能会延迟1/2秒,但听起来很可怕,而且循环之间的过渡也不平稳。