启动活动上的BroadcastReceiver同时接收SIP呼叫 [英] Start activity on BroadcastReceiver while receiving SIP Calls

查看:137
本文介绍了启动活动上的BroadcastReceiver同时接收SIP呼叫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有,我想我的来电发送到另一个活动,给用户的选择我IncomingCallReceiver类来接收或拒绝来电,这是我的IncomingReceiver类和明确的想法,所以如果有人可能会建议我怎么做

 公共类IncomingCallReceiver扩展的BroadcastReceiver {

@覆盖
公共无效的onReceive(上下文的背景下,意图意图){

    SipAudioCall incomingCall = NULL;
    尝试 {

        SipAudioCall.Listener监听器=新SipAudioCall.Listener(){
            @覆盖
            公共无效onRinging(SipAudioCall电话,SipProfile来电){
                尝试 {
                    call.answerCall(30);
                }赶上(例外五){
                    e.printStackTrace();
                }
            }
        };

        MainActivity wtActivity =(MainActivity)范围内;

        incomingCall = wtActivity.manager.takeAudioCall(意向,监听器);
        incomingCall.answerCall(30);
        incomingCall.startAudio();
        incomingCall.setSpeakerMode(真正的);

        wtActivity.call = incomingCall;

        wtActivity.updateStatus(incomingCall);

    }赶上(例外五){
        如果(incomingCall!= NULL){
            incomingCall.close();
        }
    }
}
}
 

解决方案

嗨问题已在回答#,如下无论如何改变你的onRinging方法。

  SipAudioCall incomingCall = NULL;
尝试 {

    SipAudioCall.Listener监听器=新SipAudioCall.Listener(){
        @覆盖
        公共无效onRinging(SipAudioCall电话,SipProfile来电){

          super.onRinging(来电,来电者);
        }
    };

    MainActivity wtActivity =(MainActivity)范围内;

    incomingCall = wtActivity.manager.takeAudioCall(意向,监听器);
    //方法调用它处理来电。
    showIncomingCall(意向,背景);
    wtActivity.call = incomingCall;

    wtActivity.updateStatus(incomingCall);

}赶上(例外五){
    如果(incomingCall!= NULL){
        incomingCall.close();
    }
}

私人无效showIncomingCall(意向意图,上下文语境){

    意图incomingCall =新的意图(背景下,IncomingCallActivity.class);
    context.startActivity(incomingCall);
}

公共静态无效answerIncomingCall(){

    尝试 {
        incomingCall.answerCall(30);
        incomingCall.startAudio();

        如果(incomingCall.isMuted()){
            incomingCall.toggleMute();

        }
    }

    赶上(例外五){

        的System.out.println(e.toString());
    }

}

公共静态无效rejectIncomingCall(){

    尝试 {
        如果(incomingCall!= NULL){

            incomingCall.endCall();
            incomingCall.close();
        }

    }赶上(例外五){

        的System.out.println(e.toString());
    }
}
 

}

而在你来电的活动,你必须接听和拒绝呼叫按钮,把下面的code。

  btnAnswer.setOnClickListener(新OnClickListener(){

        @覆盖
        公共无效的onClick(视图v){

            IncomingCallReceiver.answerIncomingCall();

        }
    });

    btnDecline.setOnClickListener(新OnClickListener(){

        @覆盖
        公共无效的onClick(视图v){


            IncomingCallReceiver.rejectIncomingCall();
            完();
        }
    });
 

I have my IncomingCallReceiver class from which I want to send my incoming calls to another activity to give user option to Receive or Decline incoming call this is my IncomingReceiver class and clearly out of ideas so If someone might suggest how do I do that.

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();
                }
            }
        };

        MainActivity wtActivity = (MainActivity) context;                       

        incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
        incomingCall.answerCall(30);
        incomingCall.startAudio();
        incomingCall.setSpeakerMode(true);

        wtActivity.call = incomingCall;

        wtActivity.updateStatus(incomingCall);

    } catch (Exception e) {
        if (incomingCall != null) {
            incomingCall.close();
        }
    }
}
}

解决方案

Hi the question has already been answered in stackoverflow , Anyway change your onRinging method as follows.

SipAudioCall incomingCall = null;
try {

    SipAudioCall.Listener listener = new SipAudioCall.Listener() {
        @Override
        public void onRinging(SipAudioCall call, SipProfile caller) {

          super.onRinging(call, caller);
        }
    };

    MainActivity wtActivity = (MainActivity) context;                       

    incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
    //Method call which handles incoming call.
    showIncomingCall(intent, context);
    wtActivity.call = incomingCall;

    wtActivity.updateStatus(incomingCall);

} catch (Exception e) {
    if (incomingCall != null) {
        incomingCall.close();
    }
}

private void showIncomingCall(Intent intent, Context context) {

    Intent incomingCall = new Intent(context, IncomingCallActivity.class);
    context.startActivity(incomingCall);
}

public static void answerIncomingCall() {

    try {
        incomingCall.answerCall(30);
        incomingCall.startAudio();

        if (incomingCall.isMuted()) {
            incomingCall.toggleMute();

        }
    }

    catch (Exception e) {

        System.out.println(e.toString());
    }

}

public static void rejectIncomingCall() {

    try {
        if (incomingCall != null) {

            incomingCall.endCall();
            incomingCall.close();
        }

    } catch (Exception e) {

        System.out.println(e.toString());
    }
}

}

And in your incoming call Activity where you have Answer and Reject call buttons, put the following code.

btnAnswer.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            IncomingCallReceiver.answerIncomingCall();

        }
    });

    btnDecline.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


            IncomingCallReceiver.rejectIncomingCall();
            finish();
        }
    });

这篇关于启动活动上的BroadcastReceiver同时接收SIP呼叫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆