어디서 문제가 있는지 알 수 없습니다. 청취자가 onRinging
이벤트를 수신하지 못합니다 (따라서 수신 전화를 수락하거나 거부 할 수 있습니다). 내가 종료 후수신 전화가 울리지 않음
public void onReceive(Context context, Intent intent) {
SipAudioCall incomingCall = null;
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
...
@Override
public void onCallEnded(SipAudioCall call) {
// TODO Auto-generated method stub
super.onCallEnded(call);
}
@Override
public void onRinging(SipAudioCall call, SipProfile caller) {
try {
call.answerCall(30);
call.startAudio();
call.setSpeakerMode(true);
if(call.isMuted()) {
call.toggleMute();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;
incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
wtActivity.call = incomingCall;
...
내가 (CallEnd
이벤트 및 onChanged
을받을 :
IntentFilter filter = new IntentFilter();
filter.addAction("android.SipDemo.INCOMING_CALL");
callReceiver = new IncomingCallReceiver();
this.registerReceiver(callReceiver, filter);
...
SipManager manager = SipManager.newInstance(this);
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);
BroadcastReceiver
의 클래스는 이것이다 : 주요 활동 onCreate
에서
<uses-permission android:name="android.permission.USE_SIP" />
이 있습니다 : 매니페스트 이있다 전화)하지만 나는 onRinging
이벤트를받지 못한다. 무엇이 문제입니까? Thnx
편집 : 변경했습니다.
<receiver android:name=".IncomingCallReceiver" android:label="Call Receiver">
**<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>**
</receiver>
나는 브로드 캐스트 리시버이 (굵은) 같은 클래스 상속 변경 : 나는 다음과 같이 수신기 (굵게) 새로운 인 텐트 필터를 넣어
@Override
public void onReceive(Context context, Intent intent) {
try {
**PhoneStateListener phoneListener=new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
Log.d("DEBUG", "Phone listener....");
String stateString = "N/A";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
stateString = "Idle";
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
stateString = "Off Hook";
break;
case TelephonyManager.CALL_STATE_RINGING:
stateString = "Ringing";
break;
}
}
};**
WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;
SipSession ses=wtActivity.manager.getSessionFor(intent);
**TelephonyManager telephony = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);**
...
지금 내가 아직 거기에만 IDLE 상태를 얻을 수 있지만를 아무런 소리도 내지 않는다.
아무도 도움이 될 의사가 없습니까? 코드가 잘못된 부분을 아는 사람은 누구입니까? – user1182625