引用格伦卡斯滕:
“对于音频,每个设备有32个活动AudioTrack对象的硬限制(不是每个应用程序:你需要与系统的其余部分共享32个),AudioTrack在SoundPool下面内部使用,ToneGenerator,MediaPlayer,基于OpenSL ES的原生音频等。但是实际的AudioTrack限制是< 32;它更多地取决于内存,CPU负载等软因素。另外请注意Android音频混音器中的限制器目前没有动态范围压缩,所以如果你有大量的活动声音就可以进行剪辑,而且它们都很响亮。“
所以,实际上,我使用的1个MediaPlayer对应于系统中的1个AudioTrack。
重要问题:发布的MediaPlayers(即那些从我那里获得发行版)的人不计算在内,对吧?即如果我有7个媒体播放器,但已经发布了5个,我只使用全局系统池中的7-5 = 2个AudioTracks。这是对的吗?
(因此,如果所有应用程序都正确地关注其onStop / onPause中的释放,那么很难达到上面提到的硬限制;因为只有前台和可能有些暂停的应用程序使用了AudioTracks - 除了操作系统,当然)。