Android 3.1の内蔵SIPを使用してVOIPコールを実行しようとしています。私は物理的なタブレットデバイス(銀河タブ10.1)を持っています。Android VOIP SipException:SipSessionの作成に失敗しました
テスト目的のために、SipDemo exampleからプロジェクトを作成しました。うまくいきます! (私の資格情報が有効で、デバイス/ネットワークが正常であることを意味します)。
私たManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="modera.com.doorcontroller" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/logoeditedsmall" android:label="@string/app_name" android:debuggable="true">
<activity android:name="MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="CallActivity"></activity>
</application>
<uses-sdk android:minSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.sip.voip" android:required="true" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
</manifest>
私のバックエンドのコード:このコードを実行する
public void initializeManager() {
if (manager == null) {
manager = SipManager.newInstance(this);
}
if (me != null) {
closeLocalProfile();
}
try {
SipProfile.Builder builder = new SipProfile.Builder(username,
domain);
builder.setPassword(password);
builder.setOutboundProxy(proxy);
me = builder.build();
manager.open(me);
manager.setRegistrationListener(me.getUriString(),
new SipRegistrationListener() {
@Override
public void onRegistering(String localProfileUri) {
Log.i("MY", "onRegistering");
}
@Override
public void onRegistrationDone(String localProfileUri,
long expiryTime) {
Log.i("MY", "onRegistrationDone");
}
@Override
public void onRegistrationFailed(
String localProfileUri, int errorCode,
String errorMessage) {
Log.i("MY", "onRegistrationFailed");
}
});
} catch (ParseException pe) {
Log.e("MY", pe.toString());
} catch (SipException se) {
Log.e("MY", se.toString());
}
}
public void initiateCall() {
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
call.toggleMute();
Log.i("MY", "oonCallEstablished");
}
@Override
public void onCallEnded(SipAudioCall call) {
Log.i("MY", "onCallEnded");
}
};
call = manager.makeAudioCall(me.getUriString(), sipAddress,
listener, 30);
} catch (Exception e) {
Log.e("MY", e.toString());
if (me != null) {
try {
manager.close(me.getUriString());
} catch (Exception ee) {
Log.e("MY", ee.toString());
}
}
if (call != null) {
call.close();
}
}
}
(最初に私はinitalizeManagerを使用して、initalizeた後、私はinitateCallを実行します)私が受け取ります例外:
android.net.sip.SipException: Failed to create SipSession; network unavailable?
...とLogCatログ:ちょうどので、あなたが作るすべての提案は多くのことを私を助け、アンドロイド2.3以降SIP上の十分なデータがイマイチので
07-14 13:35:16.200: ERROR/SipService(364): openToMakeCalls()
07-14 13:35:16.200: ERROR/SipService(364): javax.sip.SipException: only creator can access the profile
07-14 13:35:16.200: ERROR/SipService(364): at com.android.server.sip.SipService.createGroup(SipService.java:337)
07-14 13:35:16.200: ERROR/SipService(364): at com.android.server.sip.SipService.open(SipService.java:185)
07-14 13:35:16.200: ERROR/SipService(364): at android.net.sip.ISipService$Stub.onTransact(ISipService.java:58)
07-14 13:35:16.200: ERROR/SipService(364): at android.os.Binder.execTransact(Binder.java:320)
07-14 13:35:16.200: ERROR/SipService(364): at dalvik.system.NativeStart.run(Native Method)
07-14 13:35:16.200: WARN/SipService(364): only creator can set listener on the profile
07-14 13:35:16.230: WARN/SipService(364): only creator or radio can close this profile
Googleは、任意の結果を与えていません!
** NEW **:私はいくつかの(さらに)テストを行いましたが、この問題は毎回発生しません。私は1-2の呼び出しを行うことができ、その後、私はgettin SipException:SipSessionまたはonRegistrationFailedの作成に失敗しました。しばらくして(15分?)私はもう一度電話をかけることができます。何らかのVoIPサーバーの登録/タイムアウトの問題? –
**注:**私たちの会社の電話機はすべて同じVoIPサーバーを使用しており、うまく動作しています。 –
こんにちは、大学のプロジェクトとしてAndroidのsipを使ってvoipを割り当てられました。私はこれに関して多くの問題に直面しています。私はいくつかの助けを得ることができるように私にプロジェクトを送ることができますか?私は多くの仕事をしており、実際にはサンプルプロジェクトも機能していません。そして、あなたが私に非常に参考になる非常に基本的な例を与えれば、私は非常に感謝しています。 [email protected] –