收藏 分销(赏)

你是否体验过Android手机插入耳机后仍外放的尴尬.docx

上传人:xrp****65 文档编号:6639454 上传时间:2024-12-18 格式:DOCX 页数:6 大小:817.78KB 下载积分:10 金币
下载 相关 举报
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第1页
第1页 / 共6页
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第2页
第2页 / 共6页


点击查看更多>>
资源描述
你是否体验过Android手机插入耳机后仍外放的尴尬? 文/腾讯优测 吴宇焕 近期有报道称,澳大利亚悉尼市新某大学的一名男生在课堂上看电影,不料耳机没有插好,变成了现场直播。。。 如果你认为耳机没插好事件尚且可以hold住,那么接下来的问题会不会让你更加尴尬?当你在手机插上耳机准备看电影时,声音却从扬声器里响了出来。。。 没想到藏得这么深,还是让耳机出卖了。。。 容我静静,为避免此类尴尬事件再次发生,我特意对耳机在手机上的插拔原理研究了一番。感兴趣的朋友我们可以一起讨论。。。 Android耳机插拔检测原理 Android系统在耳机插入和拔出的时候会发送广播,通过Broadcast Receiver 监听"android.intent.action.HEADSET_PLUG" 这个Intent来判断耳机是否插拔。 Intent值 说明 state 0代表拔出,1代表插入 name 字符串,代表headset的类型 microphone 1代表这个headset有麦克风,0则没有 Android耳机插拔检测具体实现 在Android4.0以上的版本,耳机插拔检测的源文件位于frameworks/base/services/java/com/android/server/WiredAccessoryObserver.java;(4.1及以上是WiredAccessoryManager.java;在android4.0以前是HeadsetObserver.java)顾名思义,它主要是用来检测有线的设备连接状态。 Android耳机插拔检测流程图 我们重点来看一下WiredAccessoryObserver WiredAccessoryObserver继承自Observed(Android耳机插拔可以有两个机制实现:Input Event和Event),从该文件的路径可以得知,这个类位于service目录,应该是在android系统服务初始化的时候实例化的,在这个类的构造方法中,注册了一个广播接收器用来接收系统启动完毕的广播。 WiredAccessoryObserver工作流程图 在收到这个广播之后:先执行i nit()函数,在这个函数中判断要检测的设备是否已经处于连接状态(比如开机之前就已经插上),如果已经连接上就调用gestate立即向系统上报。 然后调用observing函数监测文件节点路径是否有状态变化,这个函数位于他的父类Observed.java中。在之前建立好的监测中,如果kernel层有event事件发送上来则会去匹配这个路径字符串,如果匹配成功会调用在WiredAccessoryObserver重载的eventful函数,从event string中解析出death, name和state的值,然后继续调用gestate进行处理。 在gestate中会对设备的类型进行进一步的分析之后调用update上报,在update中,会往handler中发送一个消息,将耳机的状态报告给Audio系统。之后由Audio Service在antivivisectionist函数中向系统广播耳机已经插入的ACTION_HEADSET_PLUG广播,同时会通知Audio Policy做audio通路切换的工作。 真机上的适配问题 (1)在Aweigh T8833上播放音乐,在插入耳机之后耳机和扬声器都会有声音。 gestate中需要进行update操作: 通过反编译Aweigh T8833 Framework层WiredAccessoryObserver,我们发现了问题的原因: HDMI状态改变时未进行update操作,也就是没有向系统进行设备连接状态的通知,导致了在插入耳机之后耳机和扬声器都会有声音。 (2)在小米 2S上如果想实现PTT语音消息的功能,播放语音时你可能这样做: 使用Audio进行扬声器播放的时候,当插入耳机时声音并未按预期的由耳机输出,而依旧使用的扬声器进行播放。如果您也是这样做的,那么我们建议您在这台机型上将MODE_IN_CALL与STREAM_MUSIC配对或者将Answerphone设置为false,从而让程序具有兼容性。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服