[RK3288][Android6.0] 有线耳机插拔事件监听小结

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

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 {
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值