TELEPHONY IN ANDROID ANDROIDS TELEPHONY SYSTEM ARCHITECTURE Applications

  • Slides: 12
Download presentation
TELEPHONY IN ANDROID

TELEPHONY IN ANDROID

ANDROID'S TELEPHONY SYSTEM ARCHITECTURE Applications Framework Libraries Phone. App Telephony Call. Tracker manager Service.

ANDROID'S TELEPHONY SYSTEM ARCHITECTURE Applications Framework Libraries Phone. App Telephony Call. Tracker manager Service. State. Internal Data Connection Tracke Telephony Tracker Ril Daemon Package Vendor Specific RIL(. so) Linux Kernel Baseband/Cellular protocol

RADIO INTERFACE LAYER(RIL) It is the bridge between Android phone framework services and the

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/libreference-ril. so

COMMUNICATION BETWEEN VARIOUS TELEPHONY COMPONENTS Communication between RIL and rild is via commands (messages)

COMMUNICATION BETWEEN VARIOUS TELEPHONY COMPONENTS Communication between RIL and rild is via commands (messages) over sockets Rild Vendor RIL SOCKET Communication between vendor RIL and baseband is via RPC RIL com. android. internal. tel ephony. RIL Baseband

RIL INTERACTION There are two forms of communication that the RIL handles: � Solicited

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

CALL STATES EXPOSED THROUGH THE PHONESTATELISTENER 1. 2. 3. IDLE RINGING OFFHOOK NOTE: These

CALL STATES EXPOSED THROUGH THE PHONESTATELISTENER 1. 2. 3. IDLE RINGING OFFHOOK NOTE: These states can also be viewed as Phone’s current states with respect to Call/Telephony VARIOUS CALL STATES IMPLEMENTED INTERNALLY 1. 2. 3. 4. 5. 6. ACTIVE HOLDING DIALING ALERTING INCOMING WAITING

TELEPHONYINTENTS It defines intents that the telephony framework can produce, some of them are:

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_CHANG ED: 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.

SOME IMPORTANT METHODS IN THEPHONE & SIM INTERFACES AS WELL AS THE CALL ABSTRACT

SOME IMPORTANT METHODS IN THEPHONE & SIM INTERFACES AS WELL AS THE CALL ABSTRACT CLASSES. The Phone interface has methods that are used to place, accept or reject a call: public interface Phone { Connection dial(String dial. String) throws Call. State. Exception; void accept. Call() throws Call. State. Exception; void reject. Call() throws Call. State. Exception; void set. Mute(boolean muted); void start. Dtmf(char c); void send. Dtmf(char c); void stop. Dtmf(); . . . } 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 Call. State. Exception; public boolean is. Ringing() public abstract boolean is. Incoming(); . . . } Finally, the Sim. Card 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 Sim. Card { void supply. Pin(String pin, Message on. Complete); void supply. Puk(String puk, String new. Pin, Message on. Complete); void supply. Pin 2(String pin 2, Message on. Complete); void supply. Puk 2(String puk 2, String new. Pin 2, Message on. Complete); State get. State(); . . . }

OPEN TELEPHONY WITH PHONEAPP AND ANY 3 RD PARTYAPP Phone. Factory Phone. Proxy ITelephony.

OPEN TELEPHONY WITH PHONEAPP AND ANY 3 RD PARTYAPP Phone. Factory Phone. Proxy ITelephony. Manag er ITelephony. Registry Broadcast 3 rd Paty App Phone. Interface. Manager Phone. State. Listener Phone. App Telephony. Registry GSM/CDMA Phone m. CM RIL. java Socket Ril-daemon *Internal Telephony Package: com. android. internal. telephony *Open Telephony Package: android. telephony

RELATION BETWEEN FEW IMPORTANT CLASSES Phone. Base Command. Interface Base. Commands GSMPhone CDMAPhone RIL

RELATION BETWEEN FEW IMPORTANT CLASSES Phone. Base Command. Interface Base. Commands GSMPhone CDMAPhone RIL Phone. Proxy