2014-03-25 44 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上通過調用靜態方法接收/拒絕調用,解決了它。無論如何感謝您的幫助,但。 –

相關問題