每一个音频设备,都是一个audio_hw_device结构体的实现,那么对于audio_hw_device的理解,能够更好的理解音频设备可以做什么,怎么做。
看下audio_hw_device的结构体定义(hardware/libhardware/include/hardware/audio.h,英文就不写了,随便翻译一下):
516 struct audio_hw_device {
517 /**
* 音频设备的通用方法,就是记录下版本好,TAG这些基本信息的,
* 虽然没啥用,但是每个audio_hw_device都必须以此开头
*/
522 struct hw_device_t common;
523
524 /**
* Audio Flinger通过此函数查看该audio_hw_device的实现支持哪些设备。
* 蓝牙A2DP未提供此函数实现,也许就是表示啥都支持
*/
536 uint32_t (*get_supported_devices)(const struct audio_hw_device *dev);
537
538 /**
* 检查该音频接口是否已初始化
* 蓝牙似乎没检查,啥都没做,直接返回 0(success)
541 */
542 int (*init_check)(const struct audio_hw_device *dev);
543
544 /**
* 设置在某一个设备上话音数据音量,范围 0.0 - 1.0
*/
545 int (*set_voice_volume)(struct audio_hw_device *dev, float volume);
546
547 /**
* 设置该设备下所有实体的音量大小,这个就不止是话音数据了
* 范围 0.0 - 1.0
551 */
552 int (*set_master_volume)(struct audio_hw_device *dev, floa