日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
對Android源碼分析總結(jié)

在Android中進(jìn)行處理Android源碼中,hardware/ril目錄中包含著Android的telephony源碼,下面就由我向大家介紹這些目錄其中包含了三個子目錄,下面是對三個子目錄進(jìn)行具體的分析說明。

我們提供的服務(wù)有:網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、貴州ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的貴州網(wǎng)站制作公司

一、目錄hardware/ril/include分析:

只有一個頭文件ril.h包含在此目錄下。ril.h中定義了76個如下類型的宏:這些宏代表著客戶進(jìn)程可以向Android源碼telephony發(fā)送的命令,包括SIM卡相關(guān)的功能,打電話,發(fā)短信,網(wǎng)絡(luò)信號查詢等。好像沒有操作地址本的功能?

二、目錄hardware/ril/libril分析。本目錄下代碼負(fù)責(zé)與客戶進(jìn)程進(jìn)行交互。在接收客戶進(jìn)程命令后,調(diào)用相應(yīng)函數(shù)進(jìn)行處理,然后將命令響應(yīng)結(jié)果傳回客戶進(jìn)程。在收到來自網(wǎng)絡(luò)端的事件后,也傳給客戶進(jìn)程。

文件ril_commands.h:列出了telephony可以接收的命令;每個命令對應(yīng)的處理函數(shù);以及命令響應(yīng)的處理函數(shù)。 文件ril_unsol_commands.h:列出了telephony可以接收的事件類型;對每個事件的處理函數(shù);

以及WAKE Type??? 文件ril_event.h/cpp:處理與事件源(端口,modem等)相關(guān)的功能。ril_event_loop監(jiān)視所有注冊的事件源,當(dāng)某事件源有數(shù)據(jù)到來時,相應(yīng)事件源的回調(diào)函數(shù)被觸發(fā)(firePending -> ev->func())

listenCallback函數(shù):當(dāng)與客戶進(jìn)程連接建立時,此函數(shù)被調(diào)用。此函數(shù)接著調(diào)用processCommandsCallback處理來自客戶進(jìn)程的命令請求processCommandsCallback函數(shù):具體處理來自客戶進(jìn)程的命令請求。

對每一個命令,ril_commands.h中都規(guī)定了對應(yīng)的命令處理函數(shù)(dispatchXXX),processCommandsCallback會調(diào)用這個命令處理函數(shù)進(jìn)行處理。dispatch系列函數(shù):此函數(shù)接收來自客戶進(jìn)程的命令己相應(yīng)參數(shù),并調(diào)用onRequest進(jìn)行處理。

RIL_onUnsolicitedResponse函數(shù):將來自網(wǎng)絡(luò)端的事件封裝(通過調(diào)用responseXXX)后傳給客戶進(jìn)程,RIL_onRequestComplete函數(shù):將命令的最終響應(yīng)結(jié)構(gòu)封裝(通過調(diào)用responseXXX)后傳給客戶進(jìn)程。

response系列函數(shù):對每一個命令,都規(guī)定了一個對應(yīng)的response函數(shù)來處理命令的最終響應(yīng);對每一個網(wǎng)絡(luò)端的事件,也規(guī)定了一個對應(yīng)的 response函數(shù)來處理此事件。response函數(shù)可被onUnsolicitedResponse或者onRequestComplete調(diào)用。

三、目錄hardware/ril/reference-ril分析。本目錄下代碼主要負(fù)責(zé)與modem進(jìn)行交互。 文件reference-ril.c:此文件核心是兩個函數(shù):onRequest和onUnsolicited 。

onRequest 函數(shù):在這個函數(shù)里,對每一個RIL_REQUEST_XXX請求,都轉(zhuǎn)化成相應(yīng)的AT command,發(fā)送給modem,然后睡眠等待。當(dāng)收到此AT command的最終響應(yīng)后,線程被喚醒,將響應(yīng)傳給客戶進(jìn)程(RIL_onRequestComplete -> sendResponse)。

onUnsolicited函數(shù):這個函數(shù)處理modem從網(wǎng)絡(luò)端收到的各種事件,如網(wǎng)絡(luò)信號變化,撥入的電話,收到短信等。然后將時間傳給客戶進(jìn)程(RIL_onUnsolicitedResponse -> sendResponse)文件atchannel.c:負(fù)責(zé)向modem讀寫數(shù)據(jù)。其中,寫數(shù)據(jù)(主要是AT command)功能運行在主線程中,讀數(shù)據(jù)功能運行在一個單獨的讀線程中。

Android源碼at_send_command_full_nolock:運行在主線程里面。將一個AT command命令寫入modem后進(jìn)入睡眠狀態(tài)(使用 pthread_cond_wait或類似函數(shù)),直到modem讀線程將其喚醒。喚醒后此函數(shù)獲得了AT command的最終響應(yīng)并返回。

函數(shù)readerLoop運行在一個單獨的讀線程里面,負(fù)責(zé)從modem中讀取數(shù)據(jù)。讀到的數(shù)據(jù)可分為三種類型:網(wǎng)絡(luò)端傳入的事件;modem對當(dāng)前AT command的部分響應(yīng);modem對當(dāng)前AT command的全部響應(yīng)。對第三種類型的數(shù)據(jù)(AT command的全部響應(yīng)),讀線程喚醒(pthread_cond_signal)睡眠狀態(tài)的主線程。


本文題目:對Android源碼分析總結(jié)
轉(zhuǎn)載來于:http://m.5511xx.com/article/dppgjpp.html