android telephone 4.2 framework層分析

來源:互聯網
上載者:User

android telephone 4.2 framework層分析

framework層的相關代碼主要在GSMPhone、CallManager、GSMCallTracker、TelePhonyManager中。

GSMPhone:

與GSMPhone關聯的主要是Phone.java、PhoneBase.java、GSMPhone.java。Phone作為基類,定義了25對Handler訊息註冊和登出的介面,而PhoneBase繼承Phone實現了24對,還有一對在GSMPhone中實現,而GSMPhone繼承了PhoneBase。

如何管理Phone對象的呢?在應用程式層的PhoneApp中調用PhoneFactory的靜態方法makeDefaultPhones建立Phone對象,而framework中採用的是代理模式和原廠模式實現,在makedefaultPhone中,建立了PhoneProxy,參數為GSMPhone或者CDMAPhone對象,通過PhoneProxy間接的訪問GSMPhone,增加了安全性。

GSMPhone繼承了PhoneBase,而PhoneBase中繼承了Handler。使用了RegistrantList的訊息處理機制,註冊和登出Handler訊息,並且發送notifyXXX方法發出多個註冊的通知。在應用程式層中擷取當前Phone的狀態,getForegroundCall、getBackgroundCall、getRingingCall,實際擷取的是GSMPhone中的mCT即CallTracker的屬性。

CallTracker 通話管理

主要功能在GSMCallTracker中實現,GSMCallTracker繼承CallTracker,CallTracker繼承Handler,因此GSMCallTracker的handleMessage接收CallTracker的訊息。GSMCallTracker類主要提供兩大處理能力:

1、通話控制能力,如撥號、接聽來電、拒接、多方通話(conference)和交換通話(switchWaitingOrHoldingAndActive),最終都會調用operationComplete方法,完成了通話管理和控制操作,該方法中也會查詢Call List通話列表,在接收到EVENT_CALL_STATE_CHANGE方法後(即通話狀態變化後),調用pollCallsWhenSafe方法,查詢當前CallList的通話列表。

2、Handler訊息處理邏輯。接收的來自RIL對象cm的訊息,包括通話狀態的變化、無線通訊模組Modem或者Radio開啟、無線通訊模組關閉或不可用狀態,以及接收CallTracker的訊息。

流程如下:

CallManager可以被上層調用,它運行於framework層,接著調用GSMPhone的mCT對象調用dial、acceptCall等控制通話,Calltracker中會調用cm的控制方法,cm為RIL層的對象,RIL層處理完畢後,發起EVEMT_OPERATION_COMPLETE訊息,在GSMCallTracker中處理,調用operationComplete,調用RIL的cm物件查詢Call List列表,RIL層查詢完畢後,發起EVENT_POLL_CALLS_RESULT訊息,GSMCallTracker處理訊息,調用handlePollCalls處理,更新通話狀態並且發出相關的訊息通知。

GSMCall的通話管理模型:

GSMCall中包含state狀態和connections通話串連列表。GSMConnection儲存了通話串連的基本資料,多個GSMConnection對象組成一路通話,而GSMCall管理state和connections,一路通話中有多個通話串連,即多方通話。

handlePollCalls方法:

通過接收到的Message訊息,擷取Call List,對象,強制轉化為List對象,這時儲存的實際上是DriverCall,RIL層的對象。匹配connections和DriverCall List中對應的DriverCall對象。dc.index== i++;conn表示老的通話串連,而dc表示新的通話串連。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.