使用SIP API時,如何接聽我收到的電話。我使用來自sipdemo的incomingcallreceiver類進行測試,並且在WalkieTalkieActivity類中添加了一個應答按鈕,當呼叫進入時應該啓用,但我無法弄清楚如何接聽來電。任何幫助或例子,將不勝感激。Android SIP API - 如何接取接到的電話
更具體地,這裏是從IncomingCallReceiver類示例代碼:
public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SipAudioCall incomingCall = null;
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onRinging(SipAudioCall call, SipProfile caller) {
try {
call.answerCall(30);
}
catch (Exception e) {
e.printStackTrace();
}}};
WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;
incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
incomingCall.answerCall(30);
incomingCall.startAudio();
incomingCall.setSpeakerMode(true);
if(incomingCall.isMuted()) {
incomingCall.toggleMute();
}
wtActivity.call = incomingCall;
wtActivity.updateStatus(incomingCall);
}
catch (Exception e) {
if (incomingCall != null) {
incomingCall.close();
}}}}
的WalkieTalkieActivity類使用用於接收呼叫以下: 內的onCreate
IntentFilter filter = new IntentFilter();
filter.addAction("android.SipDemo.INCOMING_CALL");
callReceiver = new IncomingCallReceiver();
this.registerReceiver(callReceiver, filter);
並且其中所述簡檔被創建
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
manager.open(me, pi, null);
Acc或向開發人員發送SIP guide:
當SIP服務接收到新的呼叫時,它會發送一個包含應用程序提供的操作字符串的意圖。在SipDemo中,這個動作字符串是android.SipDemo.INCOMING_CALL。
SipDemo代碼摘錄顯示瞭如何根據操作字符串android.SipDemo.INCOMING_CALL使用掛起的意圖創建SipProfile對象。當SipProfile收到呼叫時,PendingIntent對象將執行廣播: (這是指創建配置文件的上述代碼) 然後,指南繼續說: 廣播將被intent過濾器攔截,它將然後觸發接收器(IncomingCallReceiver)。您可以在應用程序的清單文件中指定一個意圖過濾器,或者像在應用程序的活動的SipDemo示例應用程序的onCreate()方法中那樣在代碼中執行:
即時消息添加拾取按鈕到已啓用的WalkieTalkieActivity類onRinging,並在點擊時接聽來電。
我已成功處理所有其他常規呼叫問題,例如保持,靜音,發言,打電話和結束呼叫,但我無法弄清楚。
編輯 - 可能這個工作?:
public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SipAudioCall incomingCall = null;
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onRinging(SipAudioCall call, SipProfile caller) {
try {
call.answerCall(30);
}
catch (Exception e) {
e.printStackTrace();
}}};
WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;
wtActivity.inbound = incomingCall;
wtActivity.updateStatus(incomingCall);
}
catch (Exception e) {
if (incomingCall != null) {
incomingCall.close();
}}}}
,然後建立walkietalkieactivity類中的一個新的SipAudioCall和聽衆與它內部的onclicklistener其次是正常的呼叫處理像onRinging:
inbound.answerCall(30);
inbound.startAudio();
inbound.setSpeakerMode(true);
if(inbound.isMuted()) {
inbound.toggleMute();
}
--Thanks 丹尼爾
使用'用於reciving進來的呼叫 – 2012-04-24 04:15:33
answerCall'方法的ReceiveIncomingCall類包括answerCall [鏈接](http://developer.android.com/resources/samples/SipDemo/src/com/例如/ android/sip/IncomingCallReceiver.html)但我不明白它是如何調用的,或者如何從WalkieTalkieActivity類中的onclick監聽器調用它。 – Daniel 2012-04-24 04:30:40
在閱讀了關於意圖,過濾器和廣播的更多信息之後,從我所知道的情況來看,來電會自動接收。我的朋友還指出,SIP演示是一個對講機或觸摸談話類型的應用程序,我正在一個SIP軟電話和對講機應用程序會自動接聽電話。我只需要弄清楚如何處理來電不同。 – Daniel 2012-04-27 12:37:58