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