Исключение при попытке вызова (SIP)
Я разрабатываю приложение SIP, и когда я хочу позвонить кому-то(с его идентификатором, настроенным на сервере), у меня есть NullPointerException => "ошибка при попытке закрыть manager." Вот код:
public void initiateCall() {
updateStatus(sipAddress);
try {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
call.toggleMute();
updateStatus(call);
}
@Override
public void onCallEnded(SipAudioCall call) {
updateStatus("Ready.");
}
};
call = manager.makeAudioCall(me.getUriString(), sipAddress, listener, 30);
}
catch (Exception e) {
Log.i("WalkieTalkieActivity/InitiateCall", "Error when trying to close manager.", e);
if (me != null) {
try {
manager.close(me.getUriString());
} catch (Exception ee) {
Log.i("WalkieTalkieActivity/InitiateCall",
"Error when trying to close manager.", ee);
ee.printStackTrace();
}
}
if (call != null) {
call.close();
}
}
}
Спасибо за помощь.
3 ответов
VoIP / SIP libary не поддерживается по умолчанию в эмуляторе Android. Проблема в том, что manager == null
- thats, почему вы получаете исключение NullPointerException.
к счастью, есть работа-а-тур. Скачать этой ссылке и скопируйте его в ...\.\андроид АВД\.avd папка.
запустите эмулятор и
Boolean voipSupported = SipManager.isVoipSupported(this);
Boolean apiSupported = SipManager.isApiSupported(this);
теперь должно вернуться true.
источник:http://xilard.hu/
Android.сеть.sip (SIP API) работает только на G711 через Android 2.3+.
Также телефоны, поставляемые операторами, могут иметь стек SIP (android.сеть.sip) заблокирован или поврежден. SipManager.isVoipSupported(this)
&&SipManager.isApiSupported(this)
вернет false для большинства устройств-это ваш ie. в этом случае объект SipManager всегда будет иметь значение null.Для реализации SIP следует использовать стороннюю библиотеку.
существуют различные библиотеки стека sip с открытым исходным кодом, а также проекты, доступные в интернете. Вы можете скачать исходный код этого проекта. Вот список некоторых популярных библиотек стека sip с открытым исходным кодом, который позволяет голосовой вызов через интернет.
1.Jain sip (я думаю, лучший вариант):
2.Pjsip
3.Mjsip
4.Doubango
есть разные проекты с открытым исходным кодом, которые используют эти библиотеки в своих проектах.
1.Jain sip: не используется в " знаменитом" приложение. 2. Sipdroid использует MjSip 3. CSipSimple на сервере использует PjSip 4. Imsdroid использует doubango.
проверьте соединение моста в Android и сервер SIP в приложении, чтобы получить ключ SIP вашего приложения.