智能手机音频系统(二 耳机和蓝牙耳机)

 

   手机要求支持耳机和蓝牙耳机, 并且能够主动和被动的实现其探测切换。在探测到耳机和蓝牙耳机
的连接后, 我们可以通过amixer命令来设置codec的路由, 从而控制系统声音。


耳机: 耳机的连接可以通过GPIO上报到内核。由内核体现在/dev/headset(需要自己写驱动实现)。应用  级通过读取此设备,来主动获取耳机的插入状态。同时也可以通过监控IO口来获取耳机的插入
 状态。

蓝牙耳机: 蓝牙耳机则要比耳机复杂。由于蓝牙不只是作为耳机设备而存在的。因而,我们并不能
 想获取耳机状态那样去获取蓝牙耳机的俩接状体。好在LINUX下的BLUEZ为我们提供了方便。
 在蓝牙后台启动后, 我们可以注册其声音的DBUS服务。然后通过监控,其链接的connected和
 remove信号来获取当前的蓝牙耳机状态。

在手机系统中还有下面的情况需要特别处理:
设备的优先级:
1】同时连接有耳机和蓝牙耳机。大多要求优先蓝牙耳机,当蓝牙耳机断开后,就用耳机, 然后再试本机。也有的情况要求耳机和蓝牙耳机同时可以实现音频控制。
2】有些情况要求优先外设发音, 如播放MP3等。有些情况则要求外设和本机同时发音,如来电铃声。
3】处理好同系统的情景模式的关系。如振动、静音状态。
   一般情况下,这些都是在AP上层直接切断源头,不需要后台服务的专门处理。


你可能感兴趣的:(智能手机音频系统(二 耳机和蓝牙耳机))