Исключение при попытке вызова (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 вашего приложения.