Telephony概述Android系統(tǒng)是主流的手機(jī)操作系統(tǒng),手機(jī)在人們生活中的的存在最不可忽視的功能就是通信,Android系統(tǒng)中的的Telephony為此功能的核心模塊,Telephony主要提供了語(yǔ)音,短信,數(shù)據(jù)鏈接,SIM卡管理,電話簿等功能 Telephony架構(gòu)由上到下可分為4層: 應(yīng)用層(Application)面向用戶的應(yīng)用層,依賴于應(yīng)用框架層,通過訪問Telephony應(yīng)用框架層的業(yè)務(wù)模塊來(lái)呈現(xiàn)給用戶具體的功能,主要包括Phone、Contacts、SMS等應(yīng)用,Phone比較特殊,系統(tǒng)啟動(dòng)時(shí)就被運(yùn)行起來(lái)了,且Phone啟動(dòng)時(shí)會(huì)創(chuàng)建Telephony框架層,并與之運(yùn)行在同一個(gè)進(jìn)程中 應(yīng)用框架層(Framework)Telephony應(yīng)用框架層主要包括RILJ、Service、業(yè)務(wù)功能模塊三個(gè)部分構(gòu)成,提供了電話,短信,聯(lián)系人等所需的所有功能 代碼路徑是:/frameworks/base/telephony android.telephony:外部應(yīng)用可訪問的Phone模塊 com.android.internal.telephony:Phone應(yīng)用和框架內(nèi)部使用的Phone模塊 1.RILJ /frameworks/opt/telephony/src/java/com/android/internal/telephony/RIL.java RIL.java是Telephony和本地RIL的通信接口,通過Socket(rild)完成電話服務(wù)命令的收發(fā) 2.Service Telephony基于IBinder提供了各種功能的Service,以便于業(yè)務(wù)功能模塊的實(shí)現(xiàn) 3.業(yè)務(wù)功能模塊 Telephony業(yè)務(wù)功能模塊主要包括語(yǔ)音、短信、ICC 卡、網(wǎng)絡(luò)服務(wù)以及數(shù)據(jù)連接等,這些功能模塊是Android系統(tǒng)通話功能的核心和基礎(chǔ)
本地RIL層(RIL)RIL(Radio Interface Layer)是Telephony框架層與Modem之間的接口層(屬于HAL層),RIL將Modem提供的各種服務(wù)進(jìn)行了抽象,以提供給Framework層統(tǒng)一的接口 RIL架構(gòu)1.RIL抽象層 實(shí)現(xiàn)RIL層框架,包括RILD守護(hù)進(jìn)程和RIL庫(kù),定義了其與Framework層、Vendor RIL之間的接口 2.RIL實(shí)現(xiàn)層 基于不同Modem廠商的RIL功能實(shí)現(xiàn)(Vendor RIL),其主要功能是接受 RIL 層的主動(dòng) Request,轉(zhuǎn)發(fā)給 Modem,同時(shí)接受 Modem 返回的請(qǐng)求 Response 和主動(dòng)上報(bào)事件,上報(bào)給 RIL 層 RILDRILD是一個(gè)可執(zhí)行程序,作為守護(hù)進(jìn)程運(yùn)行在系統(tǒng)中,進(jìn)程內(nèi)配合RIL Lib和Vendor RIL實(shí)現(xiàn)了RIL的所有功能,它通過Socket與應(yīng)用框架層進(jìn)行通信,守護(hù)進(jìn)程內(nèi)部會(huì)初始化Vendor RIL,同時(shí)管理所有的電話相關(guān)的請(qǐng)求、主動(dòng)上報(bào)、請(qǐng)求 Response 等事件,其主要功能如下: 1.Event 處理框架(通過 Select 機(jī)制實(shí)現(xiàn)) 2.請(qǐng)求、數(shù)據(jù)下發(fā) (將 RILJ 通過 Socket 傳過來(lái)的數(shù)據(jù)解成 C 語(yǔ)言數(shù)據(jù)結(jié)構(gòu),然后和請(qǐng)求下發(fā)給 Vendor RIL 處理) 3.Response、數(shù)據(jù)上報(bào)(將 Vendor RIL 上報(bào)的請(qǐng)求 Response 和主動(dòng)上報(bào)事件打包通過 Socket 轉(zhuǎn)發(fā)給 RILJ 層)
驅(qū)動(dòng)層(Modem)RIL 驅(qū)動(dòng)用于實(shí)現(xiàn)電話功能,主要硬件是通信模塊(Modem),Modem 通過與通信網(wǎng)絡(luò)進(jìn)行溝通,傳輸語(yǔ)音及數(shù)據(jù),完成呼叫、短信等相關(guān)電話功能。 目前的智能機(jī)在硬件上多采用雙 cpu 的架構(gòu),一個(gè)是基帶處理器,主要處理數(shù)字信號(hào)、語(yǔ)音信號(hào)的編碼解碼以及通信3協(xié)議,基帶處理器、射頻和其它外圍芯片作為一個(gè) Modem 模塊,提供 AT 命令接口。 另一個(gè)是應(yīng)用處理器,運(yùn)行操作系統(tǒng)和各種應(yīng)用程序。對(duì)于目前大部分的獨(dú)立通信模塊而言,無(wú)論是 2G 還是 3G 都已經(jīng)非常成熟,模塊化相當(dāng)完善,硬件接口非常簡(jiǎn)單,也有著相對(duì)統(tǒng)一的軟件接口。 一般 Modem 模塊裝上 SIM 卡,直接上電即可工作,自動(dòng)完成初始的找網(wǎng)、網(wǎng)絡(luò)注冊(cè)等工作,完成之后即可打電話、發(fā)短信等 總結(jié)通過這篇文章介紹,可以了解整個(gè)Telephony的分層架構(gòu),以此為基礎(chǔ)可劃分Telephony相關(guān)的各個(gè)主線,進(jìn)行各個(gè)擊破 |
|
來(lái)自: liuys_360 > 《android架構(gòu)》