複製通話界面的顯示和提供人機交互的接口。進入該界面第一個調用ONCreate。不然進入OnNewIntent,該配置文件是incall_screen.xml,當中incallPanel爲通話聯繫人的信息和狀態顯示,配置文件爲call_card.xml,包括兩路通話的view定義;InCallTouchUi顯示經過管理的控制UI。相應配置文件爲incall_touch_ui.xml;java
mhandle的handleMessage方法接收到framework的CallManager發出的不一樣Phone狀態的變化。更新UI。消息類型例如如下:函數
SUPP_SERVICE_FAILED:彈出mSuppServiceFailureDialog佈局
PHONE_STATE_CHANGED:調用requestUpdateScreen方法請求更新通話界面,發送 REQUEST_UPDATE_SCREEN消息post
REQUEST_UPDATE_SCREEN:內部調用UpdateScreenui
PHONE_DISCONNECT:通話鏈接失敗時調用。在delayedCleanupAfterDisconnect中退出通話界面spa
handleOnscreenButtonClick響應通話控制的點擊button,涉及通話能力控制的相關處理邏輯xml
PhoneUtils類中的靜態方法。如接聽電話、掛斷電話、恢復、保持通話等通話控制的操做。對象
通話聯繫人信息的顯示和更新實在InCallScreen的updateScreen中完畢的,調用Callcard的updateState方法,displayMaincallStatus顯示更新第一路通話的信息。displayOnHoldCallStatus顯示hold通話保持的第二路通話信息。經過PhoneUtils.getCallerInfo獲取CallerInfo對象。保存了通話聯繫人的基本信息。接口
incomingCallWidget:接通/掛斷/短信回覆時需要使用;事件
manageConferenceButton:多方通話的界面跳轉控制button,僅僅有在多方通話時才顯示。
dialpadButton:也就是顯示或隱藏撥號盤(DTMF);
audioButton:開啓/關閉揚聲器;
muteButton:開啓/關閉麥克風靜音。開啓以後對方沒法聽到你的聲音。
holdButton:開啓/關閉呼叫保持。
addButton:添加多路通話。也就是在通話的過程當中可以暫停當前通話,撥打還有一路通話並接通;
通話控制相關的控件在IncallTouchUI 的updateState中更新,實現OnTriggerListener接口,該接口爲鎖屏控制的接口,這裏4.2作了個改動。在OnTrigger函數中。區分向上、向左和向右三個方向直接定義0,1,2,而不使用SlidingTab的類。在InCallScreen的OnResume和OnPause中註冊ACTION_HEADSET_PLUG接收耳機免提事件的廣播,發送EVENT_HEADSET_PLUG_STATE_CHANGED消息,調用showAudioModePopup顯示出菜單,進入InCallTouchUI的onMenuItemClick切換音頻輸出的策略。
佈局文件爲dtmf_twelve_key_dialer_view.xml,由輸入框dtmfDialerField和12按鍵dialpad.xml組成。
4.2中將4.0中的PhoneApp中的內容移到了PhoneGlobals中。
OnCreate中建立mWakeLock和mPartialWakeLock進行Phone應用的電源管理。
獲取了mWakeLock後。設置中的休眠時間不起做用,屏幕一直高亮,直到鎖釋放或者手動按power鍵。獲取了mPartialWakeLock後,此時可以關閉屏幕和鍵盤燈。但不是立馬關閉。直到設置的休眠時間到了。關屏。
Sensor感應器獲取手機當前的方位,推斷手機是否靠近臉部。
mProximityWakeLock電源喚醒鎖,獲取以後,關閉屏幕。
MediaButtonBoardcastReceive接收耳機HOOK的廣播事件。調用PhoneUtils的 handleHeadsetHook響應耳機的HOOK事件。
PhoneAppBoardcastReceive處理Phone應用中雜項的廣播事件,像飛行模式、數 據鏈接、SIM卡狀態等變化。
onNewRingingConnect接收到來電後的處理,調用startIncommingCallQuery查詢 聯繫人信息。經過PhoneUtils的startGetCallerInfo獲取GSMConnection的 userData查詢 到CallerInfo中。
onPhoneStatechanged通話狀態變化的處理。onDisconnect通話鏈接斷開的處理。鏈接斷開有三種類型callLogType:
INCOMMING_TYPE(來電)OUTGOING_TYPE(呼叫)MISSED_TYPE(未接來電)