1. 程式人生 > >android 通話程式結構總結

android 通話程式結構總結

一  

通話介面的顯示相關檔案的路徑在 /packages/apps/Dialer 路徑下。 每種介面都是以Fragment 的形式控制。

比如撥號介面DialpadFragment.java,應答介面AnswerFragment.java, Hold 介面OnHoldFragment.java.

二 

   下一層是/packages/services/Telecomm 

    這一層最重要的兩個物件CallsManager.java 和Call.java。

    每一路通話生成一個Call, 在CallsManager 中儲存和管理。 同時CallsManager  註冊一些Listener, 當Call 狀態改變時, CallsManager 會發出訊息通知。

      Call 物件儲存了通話相關的引數 , 然後與ConnectionServiceWrapper.java 進行對接。

      ConnectionServiceWrapper 顧名思義, 是ConnectionService 的包裝類,是Call  和ConnectionService 之間的橋樑。

三  在下一層是/packages/services/Telephony/

     這一層最重要的類是ConnectionService(/frameworks/base/telecomm/) 和TelephonyConnectionService(TelephonyConnection繼承了ConnectionService)

   TelephonyConnectionService 為每一路通話建立一個TelephonyConnection。儲存在TelephonyConnectionService中,

   TelephonyConnection 與GsmCdmaPhone  進行對接, 可以反饋到Call物件(TelephonyConnectionListener)

四 

     在下一層到達/frameworks/opt/telephony

    這一層最重要的類是 GsmCdmaCallTracker.java, GsmCdmaCallTracker 控制的是 GsmCdmaConnection 物件。

    每一路通話對應一個GsmCdmaConnection 物件, 儲存在 GsmCdmaConnection mConnections[] 陣列中。

     GsmCdmaCallTracker 還儲存三個GsmCdmaCall,mRingingCall,mForegroundCall,mBackgroundCall 記錄通話狀態。