本文基于Android 4.4和4.2,检测所用codec为wm8994。
Android和Kernel下的mic检测是建立在headset检测的基础上的,具体过程如下:
1) kernel通过Jack检测脚中断检测到有耳机插入
2) 读取codec寄存器判断headset是否带mic
3) 通过InputEvent/UEvent机制通知Android上层
详情可以参看我的前一篇基于耳机插拔检测的文章。本文基于UEvent机制来实现,即 switch driver的方式。
1. mic检测原理
先看看带mic的耳机和不带mic的耳机的差别,如下图,不带mic的耳机为3段,带mic的耳机为4段,比对一下实物可以看出两者左右声道段没有差别,差别之处是不带mic的耳机将GND和MIC两段合并在一起。因而对于不带mic的耳机来说,GND和MIC两段是几乎短路的(有一定电阻),而mic检测就是基于这个原理。
为了实现录音,

本文介绍了在Android 4.4和4.2下,基于wm8994 codec的mic检测过程。通过Kernel Jack检测、codec寄存器读取和switch driver来实现。主要步骤包括:检测耳机插入、设置codec、修改codec代码以及在switch driver中添加mic检测功能。详细探讨了wm8994 codec的设置和在Linux内核中的实现细节。
最低0.47元/天 解锁文章
4646

被折叠的 条评论
为什么被折叠?



