call就是平時我們常用的通話功能,最基本的就是來電incoming call,撥打**outgoing call,結束通話**hangupcall,一般來說撥打一方成為主叫方,接聽方為被叫方。call模組常用的一些名詞有:
1. dialing call
撥打一路**,對方尚未接聽,主叫方等待被交接聽的時候的狀態即為dialing狀態
2. active call
啟用通話:雙方正在進行的正常的通話
3. hold call
保持通話:即將當前通話掛起,雙方不管主叫還是被叫方都聽不到對方的聲音
4. mute call
靜音:靜音後對方聽不到靜音發起方的聲音,但是靜音發起方能聽到對方的聲音
5. waiting call
正在通話過程中,第三方**撥打進來,第三方對於當前正在通話的使用者來講就是waiting call等待接進來的**
6. end all
結束通話
7. auto redial
自動重撥:此項功能一般在call setting當中會讓使用者選擇開啟或是關閉,如果開啟,則裝置首次呼叫失敗後,一般會自動再次撥打該號碼,一般可自動重撥7次,也有可能更多,且前兩次自動重撥的間隔時間較短,後面幾次則較長
8. quick dial
快速撥號:即在call setting中設定乙個按鍵(一般為數字鍵)的對應乙個常用的號碼,在idle介面長按該按鍵就可顯示出該號碼,並且可以正常撥打出去
9. answer mode:
自動應答:一般響鈴5秒鐘左右,**自動接通
按任意鍵應答:除結束通話鍵和power鍵之外的任意鍵可接聽來電
一. call的一些常見業務型別:
1. call waiting
呼叫等待:此項功能需要運營商支援並開通,一般卡都支援此項功能並且運營商預設開通,一般手機在call setting裡面會有一項開啟或關閉此項功能的選項,使用者可以自由選擇。如使用者設定了呼叫等待,則可實現在通話時,若有第三方呼入,會有提示音和提示畫面,此時可以選擇接聽,拒絕或是忽略該呼叫。如果選擇接聽第三方來電,則原通話將會被保持而不會被結束通話,當然也可以選擇接聽並結束通話原通話。如果拒絕,則會結束通話第三方通話,原通話不受影響。
2. call forwarding
來電轉駁:來電轉駁是將來電轉接到其他**上的一種功能,需要運營商支援和開通,並非所有sim/usim卡都有此項功能,轉移的號碼可以是手機號碼也可以是固定**號碼,具體包括:
無條件轉移:即任意來電都將被轉移到設定好的好馬上去
無應答轉移:若來電無應答,一段時間(由網路段決定這個時間段的長短,一般是25秒左右)後,**將被轉移到設定好的**號碼上去
無法接通轉移:無**無法接通(比如關機,無訊號等)時,**將被轉移到設定好的**號碼上去
佔線中轉移:若**正在通話中,再呼入一路**,這路**將被轉移到設定好的**號碼上去
3. call barring
呼叫限制:呼叫限制是對撥出或來電認為做出一些限制,以限制**的撥出或者呼入。此功能並非所有的sim/usim卡都支援,據我了解,目前只有開通了國際通話功能的中國移動旗下的全球通卡支援此項功能。具體包括:
所有呼出:手機將無法呼出任何**,一般會有呼叫被限制的提示
所有來電:手機將不能接入任何來電
所有國際呼出:不能撥打任何境外**
所有國際來電:任何國際來電將不能被接入
僅限本地呼入呼出:所有本地呼入撥出將被禁止
4. multi-party
多方通話(並非所有的卡都支援此功能):多方通話的前提條件是此卡必須支援呼叫等待並且呼叫等待功能必須開啟。
當在通話過程中,再來一路通話,此時將第三方**接起後形成多方通話,此時原來的那路通話被掛起(即在保持hold狀態),此時這路被保持的通話將聽不到這邊的任何聲音,新來的**被接進來即為啟用狀態,保持和啟用狀態可以互相切換。所以一般多方通話會有乙個選單選項裡面包含:靜音,保持/啟用,加入會議通話,結束通話當前,結束通話保持等跟call相關的選項。
多方通話當中還包含會議通話:當存在多方通話時可選擇加入**會議,加入**會議的各方均能互相聽到彼此間的聲音,可進行多方會談。**會議的選單選項一般包括:加入/退出**會議(選擇任意乙個成員),靜音,**會議成員列表,結束通話全部,結束通話某一路程遠等,若結束通話全部,則會逐一出現每個**的結束通話介面,**會議的時間以最早建立的時間為準。多方通話包括會議通話最大支援七路通話,**會議也有人數限制,運營商不同最大人數也不同,當達到最大限制時將無法加入**會議。
二. call的處理狀態
乙個phone有且僅有三個call,分別是ringcall,forgroundcall以及backgroundcall,可以簡單的理解為每個call對應四種狀態(此處暫不去關心三種call之間的狀態區別)ring, active, hold,idle,同一時刻三個call只能有乙個ring狀態(ringcall), 乙個active狀態(forgroundcall), 乙個hold狀態(backgroundcall),可以同時有三個idle狀態。所以涉及到call不同狀態間如何切換的問題。
android中對單卡情況的處理:
1.當有ring call時,不允許hold和active切換;
2.既有ring call,又有hold call時,結束通話ring call會連帶hold call一起結束通話。
3.同時有active call和hold call,結束通話時先掛active call再掛hold call
其實在我們的**中,確切的來說不是call而是connection的概念。ringcall只能建立一路connection,而forgroundcall和backgroundcall則可以同時建立多路connection,尤其是又多方通話或者是會議通話的時候,三種狀態最多可同時建立七路connection。有關call狀態的切換圖如下所示:
三. ril層有關call 的處理,以gsm單卡為例:
從framework層會發下撥號的請求ril_request_dial,在ril層的處理流程如下圖所示:
1 Call的基本知識
call的基本知識 call就是平時我們常用的通話功能,最基本的就是來電incomingcall,撥打 outgoingcall,一般來說撥打一方成為主叫方,接聽方為被叫方。call模組常用的一些名詞有 dialingcall 撥打一路 對方尚未接聽,主叫方等待被交接聽的時候的狀態即為dialing...
call 和call的區別
語法 func.call thisarg,arg1,arg2,thisarg表示函式執行時使用的this值,arg1,arg2,是引數列表,表示函式執行時需要的引數。在建構函式繼承的示例中 父類 function person name,age 子類 function student name,ag...
call 和call的區別
這兩個方法都是函式物件的方法,需要通過函式物件來呼叫。它們的第乙個引數是乙個物件。因為你可以直接指定 this 繫結的物件,因此我們稱之為顯式繫結。例1 1 thisobj不傳或者為null undefined時,函式中的this會指向window物件 非嚴格模式 2 傳遞乙個別的函式名時,函式中的...