打電話phone framework層 下

2021-09-01 11:02:31 字數 2517 閱讀 1753

首先看下framework的入口函式phoneutils.placecall

public static int placecall(context context, phone phone,

string number, uri contactref, boolean isemergencycall,

uri gatewayuri) else

...number = phonenumberutils.extractnetworkportion(number);

number = phonenumberutils.convertkeypadletterstodigits(number);

number = phonenumberutils.formatnumber(number);

...connection.setuserdata(..)

...setaudiomode();

activatespeakerifdocked(phone);

}

這裡無論怎麼樣都會將number轉換為numbertodial然後呼叫callmanager.dial的方法打**。然後會把number轉換為相對應的打**者的資訊存入connection中。  setaudiomode()設定聲音模式,activatespeakerifdocked()根據外設情況,是否開啟麥克.

看下callmanager.dial的**

public connection dial(phone phone, string dialstring) throws callstateexception  else }}

result = basephone.dial(dialstring);

}

這裡應該比較好理解,主要看下getphonebase的作用就好了。

private static phone getphonebase(phone phone) 

return phone;

}

public phone

getphone()

gsmcall (gsmcalltracker owner)
主要就是根據當前**型別,返回不同的**物件.

basephone.dial,則是呼叫gsmphone.dial(如果**為cdmaphone,則會呼叫cdmaphone.dial)

public connection

dial (string dialstring, uusinfo uusinfo) throws callstateexception else if (mmi.istemporarymodeclir()) else if (systemproperties.getboolean("ro.config.multimode_cdma", false) &&

mmi.isglobaldevmmi()) else

}

這裡好像是對網路**做了處理,筆者具體也不是很清楚。看下其他**的流程。

會呼叫mct.dial,既是呼叫gsmcalltracker.dial

dial (string dialstring, int clirmode, uusinfo uusinfo) throws callstateexception
其中cm.dial進入ril層,呼叫dial方法.

updatephonestate方法會更新當前**的狀態。然後呼叫notifyprecisecallstatechanged進行通知,因為在incallscreen的oncreat()方法中註冊了registerforphonestates狀態改變,所以上層會收到通知做出相對應的改變.

讓我們看下ril.dial

public void

dial(string address, int clirmode, uusinfo uusinfo, message result) else

if (rilj_logd) riljlog(rr.serialstring() + "> " + requesttostring(rr.mrequest));

send(rr);

}

後面的就比較容易了,我們直接看ril中rilsender的case event_send。

handlemessage(message msg)
這裡會向socket中寫資訊.而rilreciver那裡一開始就建立了socket的連線,與rild通訊。

class rilreceiver implements runnable  else 

try

static final string socket_name_ril = "rild";

static final string socket_name_ril1 = "rild1";

至此,framework層結束

打電話功能

方式一 直接呼叫 需要許可權,6.0及以上系統需要動態申請 val intent intent intent.action call intent.data uri.parse tel phone intent.flags intent.flag activity new task startact...

打電話 求和

題目描述 上圖是乙個 的九宮格,如你所見乙個數字對應一些字母,因此在國外企業喜歡把 號碼設計成與自己公司名字相對應。例如公司的help desk號碼是4357,因為4對應h 3對應e 5對應l 7對應p,因此4357就是help。同理,tut glop就代表888 4567 310 gino代表31...

打電話見性格

在日常生活中,我們的許多行為舉止常常是無意的,但從這些無意之中卻能體現出有心人的 身心 從以下打 的不同型別中,你也可以大致了解某些人的性格特點。悠閒舒適型這類人用 時舒舒服服地坐著或躺著,一副泰然自若狀。他們生活沉穩鎮定,泰山壓頂面不改色。以筆代指型習慣於用手中的原子筆等去撥動號碼。這類人性格比較...