Android_FM分析.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android_FM分析

FM Document 李耀宗 1.??????Start FM 根据FM的AndroidManifest.xml的定义,FmServiceManager作为application被首先启动,它初始化过程中先去register FmReceiver,如: registerService(FmReceiver.SERVICE_NAME, new FmReceiverService(mSystemContext)); 这里只提供了这一个local Android service,由FMServiceConfig配置。FmReceiverService初始化之后被包装成FmServiceWrapper类型放在容器中,初始状态为stoped。同时BTLD library被加载并且FMInitNative被调用,Native被初始化。(Native初始化过程?略) ????static { ????????//System.loadLibrary(btld); ????????System.loadLibrary(fmservice); ????????classFmInitNative(); ????????} /* BTLD配置在init.qcom.rc中启动?*/ 随后FmRadio被初始化,它从系统获取NotificationManager、TelephonyManager、AudioManager服务,以监听相关的状态或者进行相应的操作。然后通过getProxy()函数调用初始化FmReceiver,并将FmReceiverEventHandler对象传递给它。并进行一些其他的初始化工作。 2.??????FM类基本结构 FmServiceManager?-- Application ??|-- FmServiceWrapper ????????|-- FmReceiverService FmReceiverService?-- BaseService -- IbtService?(均由FM模块实现) ??|-- CallbackListIfmReceiverCallback?(实现回调机制,本应为Binder跨进程) ??|-- Handler?(实现Msg处理) FmReceiver ??|-- FmReceiverCallback -- IFmReceiverCallback.Stub?(未使用) ??|-- LocalFmReceiverCallback -- IfmReceiverCallback (aidl) ????????|-- Handler?(引用,此处使用多线程进行消息处理) ????????|-- HandlerCreatorImpl -- IhandlerCreator ??????????????|-- Handler ????????????????????|-- IfmReceiverEventHandler?(引用指向FmReceiver. mHandler,如此复杂的结构只是为了使用多线程处理message) ??|-- IfmReceiverEventHandler?(引用来自FmRadio) ??|-- LocalFmReceiverServiceStub -- IfmReceiverService (aidl) ????????|-- FmReceiverService?(引用指向FmServiceManager. FmReceiverService,本应为跨进程通信,这里实现为进程内函数调用,通过getProxy函数获取引用) FmRadio?(实现了IbluetoothProxyCallback接口,为获取FmReceiver引用) ??|-- FmReceiver?(引用从onProxyAvailable()函数中获取) ??|-- Handler ??|-- FmReceiverEventHandler -- IfmReceiverEventHandler?(配合Handler对来自FmReceiver的事件进行处理) FM的代码中实现了许多原Android框架的基类,如:BaseProxy、BaseService等,都是为了实现本地调用。FM的代码中还有一些其他的类,例如:FmRadioSettings、FmReceiveView等等。 初始化过程: set Volume函数调用的逻辑如下: FmRadio的dispatchKeyEvent()函数接收到KEYCODE_VOLUME_UP事件,调用FmReceiver的setFMVolume()函数,FmReceiverService实现为本地类后,就直接调用它的setFMVolume()函数,再转化为setFMVolumeN

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档