Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
WiredAccessoryObserver用来处理kernel通知耳机插拔事件,不够它只监听有线音频外设连接,其他无线的耳机在其他模块维护。
WiredAccessoryObserver继承自UEventObserver, UEventObserver用于接收Uevent的一个类,内部维护一个线程,用于接收UEvent事件,通过调用它的StartObserving()来告诉UEventObserver要监听什么样的UEvent,当事件到来的时候会调用对应的onUEvent()来处理。
初始化一:
WiredAccessoryObserver接收audio jack/hdmi audio/usb audio这三个事件.
每种外设会被定义成一个UEventInfo用于保存它的状态。
WiredAccessoryManager.java:
private List<UEventInfo> makeObservedUEventList() {
List<UEventInfo> retVal = new ArrayList<UEventInfo>();
UEventInfo uei;
//audio jack事件注册
// Monitor h2w
if (!mUseDevInputEventForAudioJack) {
uei = new UEventInfo(NAME_H2W, BIT_HEADSET, BIT_HEADSET_NO_MIC, BIT_LINEOUT);
if (uei.checkSwitchExists()) {
retVal.add(uei);
} else {
Slog.w(TAG, "This kernel does not have wired headset support");
}
}
//usb audio事件注册
// Monitor USB
uei = new UEventInfo(NAME_USB_AUDIO, BIT_USB_HEADSET_ANLG, BIT_USB_HEADSET_DGTL, 0);
if (uei.checkSwitchExists()) {
retVal.add(uei);
} else
Android 6.0 有线耳机插拔事件监听解析

本文介绍了在Rockchip平台、Android 6.0系统下,如何使用WiredAccessoryObserver监听有线耳机插拔事件。WiredAccessoryObserver是UEventObserver的子类,用于接收kernel的Uevent通知。文章详细讲解了初始化过程,包括监听的事件类型(audio jack, hdmi audio, usb audio)和耳机状态管理,并概述了事件到来时的处理流程。"
119279317,7470119,基金投资策略总结与改进,"['投资策略', '基金分析', '理财经验', '风险管理', '主动管理基金']
最低0.47元/天 解锁文章
2540

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



