更具体地说,这是来自Incomingcallreceiver类的示例代码:
public class Incomingcallreceiver extends broadcastReceiver {@OverrIDepublic voID onReceive(Context context,Intent intent) {SipAudioCall incomingCall = null;try {SipAudioCall.Listener Listener = new SipAudioCall.Listener() {@OverrIDepublic 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,i,Intent.FILL_IN_DATA);manager.open(me,pi,null);
根据开发人员SIP guide:
当SIP服务收到新呼叫时,它会发出一个具有应用程序提供的动作字符串的意图.在SipDemo中,此 *** 作字符串是androID.SipDemo.INCOMING_CALL.
此代码摘录自SipDemo,显示了如何使用基于 *** 作字符串androID.SipDemo.INCOMING_CALL的待定意图创建SipProfile对象.当SipProfile接收到一个调用时,PendingIntent对象将执行广播:
(这是指上面创建配置文件的代码)
然后指南继续说:
广播将被意图过滤器截获,然后将触发接收器(Incomingcallreceiver).您可以在应用程序的清单文件中指定intent过滤器,或者在代码中执行,如在应用程序的Activity的SipDemo示例应用程序的onCreate()方法中:
我希望将一个拾取按钮添加到在铃声上启用的WalkIETalkIEActivity类,并在点击时接听来电.
我已成功处理所有其他一般通话问题,如保持,静音,扬声器,拨打电话和结束通话,但我无法弄清楚这一点.
编辑 – 这可行吗?:
public class Incomingcallreceiver extends broadcastReceiver {@OverrIDepublic voID onReceive(Context context,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 Class中设置一个新的SipAudioCall,并在其中使用onclickListener进行onRinging的监听,然后进行正常的调用处理,如:
inbound.answerCall(30);inbound.startAudio();inbound.setSpeakerMode(true);if(inbound.isMuted()) {inbound.toggleMute();}
– 谢谢
丹尼尔
谢谢,丹尼尔
总结以上是内存溢出为你收集整理的Android SIP API – 如何接听已接来电全部内容,希望文章能够帮你解决Android SIP API – 如何接听已接来电所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)