耳机插拔/线控按键识别流程
1.文档概述
本文以msm8909平台,android N为例,介绍了通用情况下,耳机插拔的流程步骤,以及对耳机类型的识别逻辑。以方便在项目工作中经常会遇到耳机不被识别,或者识别后不能正常工作等情况,都可以参考此文档检测判断逻辑,确定问题根本,理解底层框架。
2.耳机的类型
从主观来看,耳机分三段耳机和四段耳机,而四段耳机又分为欧标和美标两种。通常,四段耳机被写作headset,而三段耳机写作headphones。具体的区别如下图:
l 三段耳机:线序分别为,L、R、G,没有MIC端,所以三段耳机无法使用mic,只能接受声音,另外,三段耳机L,R线序长度正常,G端比较长
l 四段-美标(CTIA)耳机:线序分别为L,R,G,M,第三阶为GND
l 四段-欧标(OMTP)耳机:线序分别为L,R,M,G,第四段为GND
由于CTIA和OMTP在MIC和GND是相反的,所以会出现有些耳机插入手机上声音很小,按住HOOK将恢复正常,说明耳机和手机不匹配造成。
如想兼容两种不同类型的耳机:
有以下方式可以选择:
1. 增加硬件兼容支持两种耳机
2. 使用转接线
在软件上,除了上述情况以外,还有一些外设设备会链接到耳机接孔,比如:自拍杆,外接音箱,TTY设备或者AUX延长线等,在软件上,对这些额外的设备进行了一个分类,如下枚举:
65enum wcd_mbhc_plug_type {
66 MBHC_PLUG_TYPE_INVALID= -1, ——无效设备
67 MBHC_PLUG_TYPE_NONE, ——未接入设备
68 MBHC_PLUG_TYPE_HEADSET, ——四段耳机
69 MBHC_PLUG_TYPE_HEADPHONE, ——三段耳机
70 MBHC_PLUG_TYPE_HIGH_HPH, ——高阻抗耳机
71 MBHC_PLUG_TYPE_GND_MIC_SWAP, ——欧美标标志位
72};
可以在log中检索如下样例,确认目前MBHC耳机状态类型