2014-03-25 45 views
0

我有我的IncomingCallReceiver类,我想从其中发送我的传入呼叫到另一个活动,以便用户选择接收或拒绝传入呼叫,这是我的IncomingReceiver类,并且明显地出于想法,所以如果有人可能会建议我该怎么做。在接收SIP呼叫时在BroadcastReceiver上启动活动

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

回答

1

你好问题已经在stackoverflow中回答了,无论如何改变你的onRinging方法如下。

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

}

而且在你接听和拒绝呼叫按钮您的来电活动,把下面的代码。

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

我在google上通过调用静态方法接收/拒绝调用,解决了它。无论如何感谢您的帮助,但。 –

相关问题