2011-12-29 27 views
0

我试图播放多个音频文件,一个接一个地播放,目前我正在使用AsyncTasks准备并启动mediaPlayer,但未能找到一种好的方法来移动到最后的下一个轨道目前的一个。并非每个音频文件都会每次播放,播放由布尔值决定。AsyncTasks and Audio

任何帮助都非常赞赏。

回答

1

我想您已经阅读Android的SDK /文档/参考/安卓/媒体/ MediaPlayer.html,它说:

当播放到结束的流,播放完成。 如果使用setLooping(布尔值)将循环模式设置为true,则MediaPlayer对象应保持启动状态。如果循环 模式设置为false,则播放器引擎会调用用户提供的 回调方法OnCompletion.onCompletion(),如果 OnCompletionListener事先通过 setOnCompletionListener(OnCompletionListener)注册。调用 回调信号,该对象现在处于Playback Completed 状态。当处于PlaybackCompleted状态时,调用start()可以从 重新开始从音频/视频源开始播放。

所以你可以设置一个新的源,prepareAsync然后开始完成回调。通过这种方式,您可以连续播放,但不是无缝的。

+0

谢谢,这是使用同一个mediaPlayer播放所有曲目的好方法 – Flynn 2011-12-29 19:03:44

0

令人怀疑使用MediaPlayer为此将工作就像你想要的。试试这个教程:

http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.html

如果不工作,你可能不得不声音一起混合自己与他们直接流这一结果使用AudioTrack硬件。这是更低的水平,但它会给你最大的控制。如果AudioManager解决方案适用于您,它取决于您正在做什么。这绝对是更简单的路线。但是,如果您想要排列两个样本,以便在下一个样本完成时(如在音乐应用程序中),您可能必须自己混合并传输该音频。

http://developer.android.com/reference/android/media/AudioTrack.html

Algorithm to mix sound