首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

ITelephony接口跟ISms接口以及AIDL

2012-09-24 
ITelephony接口和ISms接口以及AIDL2. PhoneInterfaceManager和SimSmsInterfaceManager?????? ITelephony.S

ITelephony接口和ISms接口以及AIDL

2. PhoneInterfaceManager和SimSmsInterfaceManager
?????? ITelephony.Stub 的实现类为com.android.phone.PhoneInterfaceManager
?????? ISms.Stub的实现类为com.android.internal.telephony.gsm.SimSmsInterfaceManager
?????? 从这两个类的构造器的调用代码里可以很清楚的看到进行了Service的注册工作
????? ServiceManager.addService("phone",this);
????? ServiceManager.addService("isms",this);

3. PhoneApp,InCallScreen,PhoneUtils及其他相关类
?????? 从SimSmsInteferManager的相关方法实现中可以看到,具体就是调用GSMPhone的SmsDispatcher实例来进行相关操作的。
?????? 从PhoneInterfaceManager会维持一个Phone对象的引用,当拨号应用时,PhoneInterfaceManager会将构造好的Intent传递给PhoneApp应用,该Intent的className指定则为InCallScreen,从中我们可以看到InCallScreen具体是通过PhoneUtils调用Phone的相关方法来实现。
?????? PhoneInterfaceManager怎么获取到对应的Phone对象,然后又怎么将Phone对象传递到InCallScreen中呢?
?????? 具体这里涉及到了PhoneApp这个类,从这个类维护了一个 PhoneInterfaceManager的引用(phoneMgr)以及一个Phone引用(phone),从该类的onCreate方法中我们可以清楚的看到,PhoneApp通过PhoneFactory获取了一个Phone实例,并通过该实例实现了PhoneInterfaceManager对象。因此,我们现在只需要关PhoneFactory具体提供的是一个什么样的Phone实例了。另外,PhoneApp类还提供了一个静态方法getInstance供InCallScreen调用,InCallScreen正是通过调用该方法获得PhoneApp实例从而获得对应的Phone实例的。接下来,我们通过查看PhoneFactory的方法可以看到,Phone对象对应的就是一个GSMPhone实例。
ITelephony接口跟ISms接口以及AIDL

4.GSMPhone与RIL
?????? 从GSM的构造器可以看出,他依赖一个CommandInterface接口实例,通过PhoneFactory makeDefaultPhones方法,我们可以看到,根据

5.关于C代码与硬件之间的交互
?????? 这部分工作其实就是C代码通过串口发送AT指令来拨号,收发短信。

热点排行