Android - 如何获取 AudioManager / AudioSystem 参数列表

Posted

技术标签:

【中文标题】Android - 如何获取 AudioManager / AudioSystem 参数列表【英文标题】:Android - How to get list of AudioManager / AudioSystem parameters 【发布时间】:2015-06-09 15:31:31 【问题描述】:

AudioManager 有一个setParameters 方法,它接受字符串表示形式的键值对(“parameter_name=parameter_value”)。 在内部,它调用原生的Audiosystem.setParameters。 获取参数值的唯一方法是如果您知道其名称,则通过调用 AudioManager.getParameters 方法,该方法调用 `AudioSystem' 中相应的本地方法。

有没有办法(使用反射或其他技术)来获取支持的参数列表(当然,结果将取决于调用它的设备,因为它是特定于平台的)?

【问题讨论】:

【参考方案1】:

经过简短调查,我猜想没有可靠的方法来枚举音频设备参数的所有可用键。 android 标头定义了一小组通用参数,可能所有设备都应支持这些参数。您可以找到实际的密钥 here(查找 AUDIO_PARAMETER_* 宏)。而interface 到实际设备实现struct audio_hw_device(由供应商实现)只有get_parameters()/set_parameters(),没有枚举入口点。因此,无法请求支持的参数键的完整列表。

最重要的是:

    我们有一小组预定义的通用参数 为了处理特定于供应商的参数 - 我们应该从供应商文档或特定设备的硬件相关来源获取额外密钥的列表。

欢迎任何更正。

【讨论】:

它们适合你吗?在装有 Android 8 的 Galaxy S7 上试用时,它们都给我返回了一个空字符串……例如:audioManager.getParameters("channels") 我没有尝试过奥利奥,但似乎在最新版本中删除了很多键。查看 audio.h 以了解一些 8.0 版本。 在哪里找到它的最佳位置,以及在文件中查找什么? 只需从答案打开链接并更改 Android 版本。例如。 android.googlesource.com/platform/hardware/libhardware/+/…。按照答案查找 AUDIO_PARAMETER_*。 谢谢。好像有很多缩写。想知道每一个是什么意思,如果他们中的任何一个可以帮助解决我的通话录音问题:***.com/q/50970915/878126

以上是关于Android - 如何获取 AudioManager / AudioSystem 参数列表的主要内容,如果未能解决你的问题,请参考以下文章

急问!!!Android中如何获取或者定义AttributeSet参数??

Android View如何获取焦点

如何在Android开发中获取SIM卡信息

如何获取Android唯一标识

如何获取 android app uids

如何简单快速获取Android应用包名