【发布时间】:2011-11-22 11:31:31
【问题描述】:
在我的应用程序中,我将创建多个音轨,其中一些需要同时播放。我将使用MODE_STREAM 并在应用程序运行时写入数据。声音将动态生成,这就是我使用音轨而不是其他任何东西的原因。
我有 4 个选择,我相信:
- 异步任务
- 一个 UI 线程和一个管理所有 AudioTrack 播放的线程
- 一个 UI 线程和每个 AudioTrack 一个线程
- 一个 UI 线程和一个 Thread Pool
四种方法中哪一种是管理多个 AudioTrack 的最佳方式?
我认为线程池是要走的路,但我并不肯定,因为我还没有真正使用过它。
任何建议将不胜感激
【问题讨论】:
-
你是用什么方法实现的?
-
@burakk 我在应用程序上从未走多远,因为(至少在当时)Android 中的音频延迟非常糟糕(而且我缺乏经验)。如果我现在这样做,我会有一个后台线程,因为来自不同线程的同时音频处理是一个愚蠢的想法。而且,我认为使用一个
AudioTrack并正确设置数据(频率和诸如此类)来组合声音将是尝试播放多个音轨的方法。如果您对 Android 音频开发感兴趣,请查看 columbia.edu andraudio mailing list -
感谢您的快速回复。我已经开发了一个可以同时播放两个流的应用程序。我有两个服务,每个服务都在一个单独的线程中实例化一个 AudioTrack。正如我在stackoverflow.com/questions/27493521/… 的 SO 问题中所问的那样,我想知道处理两个以上流的最佳方法是什么。我不想为每个人写一个服务。
-
我不是音频或硬件 i/o 方面的专家,但我相信当您添加流时,拥塞会增加,这可能会导致意外/不需要的结果。不过我可能错了。如果到时候你还没有得到答复,我明天再看看你的 Q。
标签: android multithreading audio threadpool