我希望了解Android Modem代码如何调用/传递消息到Android应用层的高级概念。以SMS为例,如果网络发送SMS并且Modem(例如Qualcomm C代码解析)如何将其传输到Android应用程序层?
是否总是发生JNI调用?作为调制解调器和Android之间的接口?您能否与我们分享相关信息。谢谢。
我希望了解Android Modem代码如何调用/传递消息到Android应用层的高级概念。以SMS为例,如果网络发送SMS并且Modem(例如Qualcomm C代码解析)如何将其传输到Android应用程序层?
是否总是发生JNI调用?作为调制解调器和Android之间的接口?您能否与我们分享相关信息。谢谢。
frameworks/base/core/java
某个位置),PhoneManager接收到意图后,将其转换为一系列AT Hayes调制解调器命令,写入套接字,rild随后调用专有库的回调函数,专有库再委托给无线电固件。packages/apps/Mms
源树中)应用程序发送短信时,你输入的文本被放入意图中,PhoneManager接收到意图后,将文本转换成使用7位GSM字母编码的GSM编码,将其写入套接字,rild 随后调用专有库的回调函数,专有库再委托给无线电固件,此时文本已经离开手持设备的领域并在空中传播... :)除此之外,还可以在Android中发送广播消息,前提是使用READ_PHONE_STATE
权限并在AndroidManifest.xml中指定。frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
找到。这就是电话系统的工作原理要点,真正美妙之处在于它使用通用的AT Hayes调制解调器命令,因此简化和隐藏了真正的专有机制。继t0mm13b的解释后,当我们谈论智能手机时,就涉及到短信/通话的3层操作。
RIL(用户级别)<-> AP <-> CP
AP:应用处理器(Android操作系统运行的地方。想象一下游戏、歌曲、视频、相机等在该处理器上运行)
CP:蜂窝处理器(实际处理来/去电/短信的空中接口,与网络塔交互等)
现在假设某些数据在CP端收到(它可以是互联网数据/短信/电话)。现在在AP和CP之间有一些逻辑通道。因此,CP将根据数据类型将接收到的数据推送到相应的通道。这些数据将由AP接收。AP将把这些数据发送回RIL/App。RIL将解码这些数据(特别是通话/短信数据)。基于这个,向用户提供有关短信/电话的通知。