1. 程式人生 > >Android6.0 Telephony Frameworks之資料業務建立流程

Android6.0 Telephony Frameworks之資料業務建立流程

資料業務(資料網路,即SIM卡上網)的建立需滿足兩個條件:1.選擇並激活合適的APN;2.PS域已處於Attached狀態。預設狀態下,手機開機後就會發起PS附著的信令給網路。而所有資料網路的請求(開啟關閉資料開關、切換資料卡、修改APN等)都必須經過DcTacker.java處理,其是Telephony框架中負責資料業務的核心。

一、資料業務建立之準備知識

1.      DcTracker

DcTracker物件在Phone物件建立過程中被建立,繼承於DcTrackerBase,而DcTackerBase繼承於Handler,主要完成以下任務:

1.               update():onUpdateIcc更新SIM卡狀態;getDataEnabled()獲取資料流量開關狀態;

2.               初始化各種監聽器:registerForAllEvents(),並完成相應事件處理,如PS Attached事件EVENT_DATA_CONNECTION_ATTACHED和網路技術(LTE/GSM/UMTS)監聽事件EVENT_DATA_RAT_CHANGED;

3.               初始化一些基本的APN引數:initApnContexts();


圖1 DcTacker建構函式原始碼

2.      APN建立

APN的建立主要有兩種情況觸發:①SIM卡載入完畢(onRecordsLoaded());②APN改變(onApnChanged())。上述兩個方法均是通過呼叫createAllApnList()實現APN的建立。


圖2 APN建立

二、資料業務建立流程

framworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection

資料業務的建立有多種原因觸發,如漫遊、通話結束、APN改變、SIM卡載入完畢和網路模式改變以及PS Attached。本文將就常見的PS Attached進行分析。在DcTacker.java 類中的registerForAllEvents()方法中對PS Attached事件進行註冊監聽,程式碼如下:

Protected void registerForAllEvents(){
     mPhone.getServiceStateTracker.registerForDataConnectionAttached(this,DctConstants.EVENT_DATA_ATTACHED,null);
}


因此當PS域Attach成功之後,將會收到EVENT_DATA_CONNECTION_ATTACHED訊息:


圖3 GsmServiceStateTracker註冊dataconnection attached事件


圖4 EVENT_DATA_ATTACHED訊息處理


圖5 onDataConnectionAttached方法

整體流程如下:


由於不同事件,DcTracker互動物件不同,所用圖中用空模組表示,且不同事件的處理流程也不盡相同,圖中僅列出相同部分。而不同事件的DcTracker互動物件如下表所示。



三、資料業務建立上層觸發之資料開關

1.      main_log: D TelephonyManager: setDataEnabled: enabled=true 關鍵詞:setDataEnabled

2.      radio_log:D RILJ    : [3995]>RIL_REQUEST_SET_DATA_ON_TO_MD: 1 [SUB0]  關鍵詞:RIL_REQUEST_SET_DATA_ON_TO_MD

D AT      : AT> AT+EDSS=1  關鍵詞:EDSS,其中1表示資料開關開啟,0表示資料開關turned off

相關推薦

Android6.0 Telephony Frameworks資料業務建立流程

資料業務(資料網路,即SIM卡上網)的建立需滿足兩個條件:1.選擇並激活合適的APN;2.PS域已處於Attached狀態。預設狀態下,手機開機後就會發起PS附著的信令給網路。而所有資料網路的請求(開啟關閉資料開關、切換資料卡、修改APN等)都必須經過DcTacker.ja

資料業務建立流程APN引數的啟用(原)

        APN引數在前面《資料業務建立流程之常規APN引數的建立》一文中已經都被建立完畢並存入mAllApnSettings的陣列中,但是這些APN引數預設都是沒有被Enable的,只有當APN被Enable之後,該APN才可以被使用,下面我們就來看如何將一個APN

Android6.0 原始碼修改遮蔽導航欄虛擬按鍵(Home和RecentAPP)/動態顯示和隱藏NavigationBar

轉載請註明出處:https://blog.csdn.net/u012932409/article/details/83063075 場景分析, 為了完全實現沉浸式效果,在進入特定的app後可以將導航欄移除,當退出app後再次將導航欄恢復。(下面將採用傳送廣播的方式來移除

Android6.0 原始碼修改遮蔽系統簡訊功能和來電功能

一、遮蔽系統簡訊功能 1、遮蔽所有簡訊 android 4.2 簡訊傳送流程分析可參考這篇 戳這 原始碼位置 vendor\mediatek\proprietary\packages\apps\Mms\src\com\android\mms\trans

【Android架構Telephony篇】資料業務(2)RILJ

Android: 6.0 Desktop: Ubuntu 15.04 更新日期:2017-04-28 http://blog.csdn.net/u013686019/article/details/49719897Telephony的Overview見: 一、Teleph

iOS激情詳解資料建立,移動,複製,刪除以及歸檔和反歸檔

<span style="font-size:18px;">主要程式碼精髓:</span> #import "RootViewController.h" #import “DXModel.h" #define kDocumentPath [NSS

android6.0原始碼分析Camera API1.0框架簡介

1、架構簡介 由於最近專案涉及到Camera,所以對Camera原始碼進行了研究,本文將分享Camera框架的基本知識。anroid6.0與5.0相比,Camera框架未曾改變,依然提供了兩種API,即API1和API2,依然採用C/S的架構,而client和

【Android架構Telephony篇】資料業務(1)總覽

Android: 6.0 Desktop: Ubuntu 15.04 更新:2017-04-27 Android裝置中完整的移動通訊系統構成: (1)Hardware 這裡提到的無線通訊模組是一

Android6.0原始碼解讀Activity點選事件分發機制

    本篇博文是Android點選事件分發機制系列博文的第四篇,主要是從解讀Activity類的原始碼入手,根據原始碼理清Activity點選事件分發原理,並掌握Activity點選事件分法機制。特別宣告的是,本原始碼解讀是基於最新的Android6.0版本。

Android 7.0 虛擬按鍵(NavigationBar)原始碼分析 View的建立流程

    最近有個需求是修改虛擬按鍵的單擊和長按效果。所以研究了下Android關於虛擬按鍵的實現流程。好記性不如爛筆頭,記錄如下。     首先,幾個重要的類: //實現 單個虛擬按鍵的 自定義ImageView     frameworks/base/packages/

Android6.0 Telephony流程分析——PhoneApp啟動主要類關係分析

本文程式碼以MTK平臺Android 6.0為分析物件,與Google原生AOSP有些許差異,請讀者知悉。 PhoneApp(包名com.android.phone)主要程式碼位於 packages/

android6.0原始碼分析Zygote程序分析

在android6.0原始碼分析之Runtime的初始化一文中,對Zygote程序的初期的Runtime初始化過程進行了分析,在Runtime啟動結束後,會對Zygote程序進行初始化,其它Java程序都需要從Zygote程序來fork,而Zygote的初始化是

android6.0原始碼分析Activity啟動過程

Activity最為android開發者最熟悉的元件,由ActivityManagerService服務進行排程管理,而ActivityManagerService的啟動過程在activitymanagerservice服務原始碼分析一文中進行了詳細分析,本文基

Android6.0原始碼分析藍芽顯示接收到的檔案

在藍芽介面有個menu:顯示接收到的檔案。本文分析顯示接收到的檔案 chapter one---顯示接收到的檔案 /android/packages/apps/Settings/src/com/android/settings/bluetooth/資料夾下的Blueto

Android6.0原始碼分析menu鍵彈出popupwindow選單流程分析

例如上圖,在按下選單鍵後會彈出對應的選單選項,準確來說,是在選單鍵彈起後出現的一個popupwindow,那麼從選單鍵彈起到popupwindow建立所涉及到的歷程是怎樣的呢? 理論上是底層監測m

ANDROID6.0原始碼分析CAMERA API2.0下的CAPTURE流程分析

前面對Camera2的初始化以及預覽的相關流程進行了詳細分析,本文將會對Camera2的capture(拍照)流程進行分析。 &

android6.0原始碼分析Camera API2.0下的Preview(預覽)流程分析

本文將基於android6.0的原始碼,對Camera API2.0下Camera的preview的流程進行分析。在文章andro

android6.0原始碼分析Camera2 HAL分析

在上一篇文章對Camera API2.0的框架進行了簡單的介紹,其中Camera HAL遮蔽了底層的實現細節,並且為上層提供了相應

android6.0原始碼分析Camera API2.0簡介

前面幾篇主要分析的是android Camera API1.0的架構以及初始化流程,而google在android5.0(Loll

SpringMvc資料繫結流程

在SpringMvc中會將來自web頁面的請求和響應資料與controller中對應的處理方法的入參進行繫結,即資料繫結。流程如下:      -1.SpringMvc主框架將ServletRequest物件及目標方法的入參例項傳遞給WebDataBinderFacto