为什么PcmAudioPlayer需要Android API level 大于等于17才能用 ?

根据google的官方文档,OpenSL ES是从 Android 2.3 (API level 9)开始支持,少数API需要Android 4.0(API 级别 14),为什么PcmAudioPlayer需要Android API level 大于等于17才能用 ?

https://developer.android.com/ndk/guides/audio/opensl-for-android.html

我在Samsung SHV-10S Android 4.0.4 Api 15机器上测试,PcmAudioPlayer可以正常使用。
为什么引擎里限制了Api必须大于等于17?

@dumganhar

OpenSLES的确是从Android 2.3开始支持的,刚开始实现PcmAudioPlayer的时候(3.13),是使用OpenSLES的API进行解码操作,注意是解码,不是播放。解码的接口必须在API Level 17后才支持。所以当时限制在17。
3.15开始已经为mp3,ogg,wav三种格式使用软解码,性能能够提高很多。所以17这个限制理论上是可以去除的。但是如果是非这三种格式的音频,依然会使用OpenSLES进行解码。因此这个限制暂时还是去不掉。没法保证开发者只用这三个格式。

还有,当不用PcmAudioPlayer的时候,是用UrlAudioPlayer进行播放,UrlAudioPlayer也是用OpenSLES的API进行播放,只是混音和解码都交由系统处理了,性能低下,CPU占用高。

好的,谢谢解答。我们项目只需要用mp3:slightly_smiling: