Android のジェリー ビーン バージョンでは、Sip 呼び出しが機能しません。しかし、同じコードがアイスクリーム サンドイッチ バージョンで動作しています。ジェリー ビーンで、「sip registration failed」および「sip セッションの作成に失敗しました。ネットワークを利用できません」というエラーが発生します。このアプリケーションは、Nexus ジェリー ビーン版タブレットで確認しました。
これが私のコードです。体を助けてください...!
コード:
SipProfile.Builder builder = new SipProfile.Builder(name, domain);
builder.setPassword(password);
me = builder.build();
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(SipRegActivity.this, 0,i,Intent.FILL_IN_DATA);
manager.open(me, pi, null);
updateStatus("is opened :: "+manager.isOpened(me.getUriString()));
manager.setRegistrationListener(me.getUriString(),new SipRegistrationListener() {
public void onRegistering(String localProfileUri) {
updateStatus("SipRegistering ... ");
}
public void onRegistrationDone(String localProfileUri,long expiryTime) {
updateStatus("SipRegistering done ... ");
}
public void onRegistrationFailed(String localProfileUri, int errorCode,String errorMessage) {
}
});
initiateCall();
public void initiateCall() {
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
try {
SipSession.Listener sessionListener = new SipSession.Listener(){
@Override
public void onCalling(SipSession session) {
String callId = session.getCallId();
}
};
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
updateStatus("Call is Established");
}
@Override
public void onRinging(SipAudioCall call, SipProfile caller) {
super.onRinging(call, caller);
}
@Override
public void onRingingBack(SipAudioCall call) {
super.onRingingBack(call);
updateStatus("Ringing"+call.getState());
}
@Override
public void onCallEnded(SipAudioCall call) {
updateStatus("Call Ended.");
}
};
SipSession ss = manager.createSipSession(me, sessionListener);
call = manager.makeAudioCall(me.getUriString(),peerproile, listener, 120);
call.startAudio();
権限も与えられています。
また、isVoipSupported() と isApiSupported() もチェックしました。これらのメソッドは true を返します。