Android's Telephony System Architecture Explained
Android's telephony system architecture involves components like PhoneApp, RIL, and communication methods between various telephony components. The Radio Interface Layer (RIL) acts as a bridge between Android services and hardware, handling solicited and unsolicited commands. Communication occurs via commands over sockets, and the RIL interacts with the baseband through RPC. Various call states are exposed through the PhoneStateListener, and the telephony framework generates intents. Explore the detailed architecture of Android's telephony system here.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
ANDROID'S TELEPHONY SYSTEM ARCHITECTURE PhoneApp Applications Internal Telephony Package Data ServiceState Tracke Telephony manager CallTracker Connection Tracker Framework Vendor Specific RIL(.so) Libraries Ril Daemon Linux Kernel Baseband/Cellular protocol
RADIO INTERFACE LAYER(RIL) It is the bridge between Android phone framework services and the hardware. The RIL consists of two primary components: RIL Daemon: The RIL daemon initializes the Vendor RIL, processes all communication from Android telephony services, and dispatches calls to the Vendor RIL as solicited commands. Vendor RIL: The radio-specific Vendor RIL that processes all communication with radio hardware and dispatches calls to the RIL Daemon (rild) through unsolicited commands. The line 1 is replace with 2 in init.rc to specify the vendor RIL lib that will be loaded in the main method of rild.c 1. Service ril-daemon /system/bin/rild 2. Service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
COMMUNICATIONBETWEENVARIOUSTELEPHONY COMPONENTS Communication between RIL and rild is via commands (messages) over sockets RIL SOCKET Rild com.android.internal.t elephony.RIL Vendor RIL Baseband Communication between vendor RIL and baseband is via RPC
RIL INTERACTION There are two forms of communication that the RIL handles: Solicited commands: Solicited commands originated by RIL lib, such as DIAL and HANGUP. Unsolicited responses: Unsolicited responses that originate from the baseband, such as CALL_STATE_CHANGED and NEW_SMS.
logs logs
PHONEAPP AND TELEPHONY FRAMEWORK COMMUNICATION
CALL STATESEXPOSEDTHROUGHTHE PHONESTATELISTENER IDLE RINGING OFFHOOK 1. 2. 3. NOTE: These states can also be viewed as Phone s current states with respect to Call/Telephony VARIOUS CALL STATESIMPLEMENTED INTERNALLY ACTIVE HOLDING DIALING ALERTING INCOMING WAITING 1. 2. 3. 4. 5. 6.
TELEPHONYINTENTS It defines intents that the telephony framework can produce, some of them are: ACTION_SERVICE_STATE_CHANGED: the phone service state has changed. ACTION_SIGNAL_STRENGTH_CHANGED: the phone's signal strength has changed. ACTION_ANY_DATA_CONNECTION_STATE_CHA NGED: the data connection state has changed for any one of the phone's mobile data connections. ACTION_DATA_CONNECTION_FAILED: an attempt to establish a data connection has failed. ACTION_SIM_STATE_CHANGED: the SIM card state has changed.
SOMEIMPORTANTMETHODSINTHE PHONE & SIM INTERFACES ASWELLASTHE CALLABSTRACTCLASSES. The Phone interface has methods that are used to place, accept or reject a call: public interface Phone { Connection dial(String dialString) throws CallStateException; void acceptCall() throws CallStateException; void rejectCall() throws CallStateException; void setMute(boolean muted); void startDtmf(char c); void sendDtmf(char c); void stopDtmf(); ... } A Call object is created when you answer a call, and the Call class methods implement call-related functionality allowing you to, among other things, hang up: public interface Phone { public abstract class Call { public abstract void hangup() throws CallStateException; public boolean isRinging() public abstract boolean isIncoming(); ... } Finally, the SimCard interface provides an access to a SIM card via methods that allow users to supply a PIN (Personal Identification Number) and a PUK (Personal Unblocking Key), which is used to unblock the PIN: public interface SimCard { void supplyPin(String pin, Message onComplete); void supplyPuk(String puk, String newPin, Message onComplete); void supplyPin2(String pin2, Message onComplete); void supplyPuk2(String puk2, String newPin2, Message onComplete); State getState(); ... }
& OPEN TELEPHONYWITH PHONEAPP AND ANY 3RDPARTY APP PhoneApp 3rd Paty App PhoneInterfaceManager PhoneStateListener ITelephony PhoneFactory Broadcast TelephonyManag er PhoneProxy ITelephonyRegistry TelephonyRegistry GSM/CDMA Phone mC M Socket RIL.java Ril-daemon *Internal Telephony Package: com.android.internal.telephony *Open Telephony Package: android.telephony
RELATIONBETWEENFEWIMPORTANT CLASSES Phone CommandInterfac e PhoneBase BaseCommands CDMAPhon e GSMPhone RIL PhoneProxy