AsyncTasks和音频

时间:2011-12-29 16:31:25

标签: android audio android-asynctask

我正在尝试一个接一个地播放多个音频文件,并且我正在使用AsyncTasks来准备和启动mediaPlayer,但是未能找到一个好的方法来移动到当前结束时的下一个音轨。并非每次都会播放每个音频文件,并且它的播放由布尔值决定。

任何帮助都非常赞赏。

2 个答案:

答案 0 :(得分:1)

我猜你已经阅读了android-sdk / docs / reference / android / media / MediaPlayer.html,它说:

  

当播放到达流的结尾时,播放完成。   如果使用setLooping(boolean)将循环模式设置为true,则   MediaPlayer对象应保持Started状态。如果循环   mode设置为false,播放器引擎调用提供的用户   回调方法,OnCompletion.onCompletion(),如果是   OnCompletionListener预先通过注册   setOnCompletionListener(OnCompletionListener)。调用   回调信号表示该对象现在位于PlaybackCompleted中   州。在PlaybackCompleted状态下,调用start()即可   从音频/视频源的开头重新开始播放。

因此,您可以设置新的源,prepareAsync然后在完成回调中启动。通过这种方式,您可以获得连续播放,但它不是无缝的。

答案 1 :(得分: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