admin 管理员组文章数量: 887042
android fm流程,Android
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模块实现)
??|--> CallbackList?(实现回调机制,本应为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实现为本地类后,就直接调用它的se
本文标签: android fm流程 Android
版权声明:本文标题:android fm流程,Android 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1725685821h875139.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论