天天看點

[Android執行個體] Android核心分析之十六Android電話系統-概述篇

 Android電話系統之概述篇

  首先抛開Android的一切概念來研究一下電話系統的最基本的描述。我們的手機首先用來打電話的,随後是需要一個電話本,随後是PIM,随後是網絡應用,随後是雲計算,随後是想我們的手機無所不能,替代PC。但是作為一個電話的基本功能如下:

  0)撥叫電話,接聽電話,挂斷電話,發送短信,網絡連接配接,PIM管理

  1)由于電話營運商為我們提供了呼叫等待,電話會議等補充業務,是以我們的手機需要管理多路通話,如何管理?

  2)來電時,我們要播出來電鈴聲,接通時我們需要切換語音通道,這個又跟多媒體系統打上了交道,例如有耳機插上了,有藍牙耳機連上了,系統該做如何的管理和切換?

  3)上網的網絡通路建立(例如GSM GPRS),如何PPP連接配接并連接配接到LinuxSocket通道上的?系統如何管理資料連接配接?

  4)AP跟Modem通訊時通過AT指令的,如何将AT指令變成一個個具體的操作函數,如何管理Modem發給我們的回應,AT指令通道,資料通道如何管理?

  5)sim卡的電話本如何管理?

  上面的關于手機的基本問題,Android電話系統設計者必須要解答的問題。該設計如何的管理架構,提出什麼概念來表達?是以要分析Android的電話部分,還是需要了解電話實作的背景知識,通訊協定,大體架構。

  我們回到電話系統基本構成上,先從整體上去把握一下電話子產品的大體架構,先從空中俯瞰。我給出的圖是一般的智能手機的架構圖,該架構基本能夠概括所有手機電話子產品的構成,當然也包括Android的電話系統構成。

[Android執行個體] Android核心分析之十六Android電話系統-概述篇

  智能機架構一般是應用處理器+Modem。應用處理器與Modem的連接配接使用序列槽或者USB。在一個硬體序列槽通路上實作為了要同時實作資料傳輸并同時實作控制Modem,就需要實作多路複用協定(GSM TS07.10),在底層我們在多路複用的基礎上虛拟了兩個序列槽,一個用于CMD通道,一個用于DATA通道。電話的所有控制通路都是在這連個通道上。

  RIL,Radio Interface Layer。本層為一個協定轉換層,手機架構需要适應多類型的Modem接入到系統中,而對于不同的Modem有不同的特性,AT指令的格式或者回應有所不同,但是這種特性在設計應用時不可能完全考慮和相容。是以設計者在設計電話系統時,建立了一個虛拟電話系統,為該虛拟電話系統規定了标準的功能,上層的電話管理都是建立在這些标準的功能基礎之上。而RIL則是将虛拟電話系統的标準功能轉換成實際的所使用的Modem的AT指令。

  Android設計者将電話系統設計成了三部分。

[Android執行個體] Android核心分析之十六Android電話系統-概述篇

  Andoird的Phone Service其實是PhoneApp.GSMPhone(CDMAPhone)是Phone Service核心的對象,他包含了如下的相關對象。

[Android執行個體] Android核心分析之十六Android電話系統-概述篇

  我們的分析任務就是要把這些對象的互相關系,及其對象間資料傳遞關系弄清楚。首先我們給出以下的Android電話系統的架構,以便對Android電話系統有個概要的認識,然後從資料流的角度,以及對象的引用關系來分析系統。下面是android電話系統整體架構圖。

[Android執行個體] Android核心分析之十六Android電話系統-概述篇