你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第1页
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第2页
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第3页
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第4页
你是否体验过Android手机插入耳机后仍外放的尴尬.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

你是否体验过Android手机插入耳机后仍外放的尴尬?文/腾讯优测 吴宇焕近期有报道称,澳大利亚悉尼市新某大学的一名男生在课堂上看电影,不料耳机没有插好,变成了现场直播。如果你认为耳机没插好事件尚且可以hold住,那么接下来的问题会不会让你更加尴尬?当你在手机插上耳机准备看电影时,声音却从扬声器里响了出来。没想到藏得这么深,还是让耳机出卖了。容我静静,为避免此类尴尬事件再次发生,我特意对耳机在手机上的插拔原理研究了一番。感兴趣的朋友我们可以一起讨论。Android耳机插拔检测原理Android系统在耳机插入和拔出的时候会发送广播,通过Broadcast Receiver 监听ent.action.HEADSET_PLUG 这个Intent来判断耳机是否插拔。Intent值说明state0代表拔出,1代表插入name字符串,代表headset的类型microphone1代表这个headset有麦克风,0则没有Android耳机插拔检测具体实现在Android4.0以上的版本,耳机插拔检测的源文件位于frameworks/base/services/java/com/android/server/WiredAccessoryObserver.java;(4.1及以上是WiredAccessoryManager.java;在android4.0以前是HeadsetObserver.java)顾名思义,它主要是用来检测有线的设备连接状态。Android耳机插拔检测流程图我们重点来看一下WiredAccessoryObserverWiredAccessoryObserver继承自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进行扬声器播放的时候,当插入耳机时声音并未按预期的由耳机输出,而依旧使用的扬声器进行播放。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论