SipApi не поддерживается каким-либо устройством

Я использую родной sip apis для реализации sip-вызовов в приложении для Android, и он работает нормально, но в некоторых устройствах, таких как CANVAS 3, он не работал. После отладки я обнаружил, что эта строка кода возвращает NULL

 **manager = SipManager.newInstance(ctx);**

Это означает, что устройство не поддерживает Sip Apis. Но на том же устройстве другие приложения для sipcalling, такие как SipDroid и т. Д. Работают должным образом. Как это возможно? Они не используют родной sip Apis???

2 ответа

Решение

Просто в дополнение к ответу SilentKiller, я бы переслал свой ответ на этот вопрос, но, пожалуйста, имейте в виду, что выбор стека является довольно сложной задачей и зависит от ваших целей и предпочтений.


Android SIP Stack использует старую версию JAIN SIP плюс некоторые расширения (IMS, поддержка RTP и т. Д.). Основная проблема с этим стеком состоит в том, что в большинстве устройств он работает только через WiFi, без 3G или LTE (обратите внимание, что android.net.sip.SipManager содержит метод isSipWifiOnly знать, включено ли это ограничение).

С другой стороны, pjsip как говорится, это не SIP-стек, а полноценная мультимедийная коммуникационная библиотека. Он действительно универсален: вы можете использовать огромное количество настроек или просто запустить их как простой пользовательский агент. Он работает с любым видом передачи данных (не ограничиваясь WiFi).

Теперь сравнение: на мой взгляд, pjsip является более полным и универсальным, но более сложным для интеграции с вашим проектом (с Android SIP Stack все остается в среде SDK, в то время как с pjsip, вам нужно будет использовать NDK и библиотеку JNI).

Мое мнение: если вы планируете создать очень простое приложение SIP и не обращаете внимания на ограничение Wi-Fi, я думаю, лучше всего будет использовать нативный SIP API, но, если вы планируете улучшить его и сделать что-то более "интересное", Я настоятельно рекомендую pjsip, Я использовал как JAIN SIP, так и pjsip и, опять же, мой голос идет за psip, Но это только мое мнение.


Есть также еще один сторонний стек, который стоит проверить: Linphone. Он также интегрирован в ваш проект с помощью JNI (например, pjsip) и также довольно полон, но, возможно, немного сложнее и тяжелее.

Надеюсь это поможет.

Вы можете пойти с пользовательскими SipLibraries.

Библиотека сторонних разработчиков с открытым исходным кодом для Android

  1. Джайнский глоток: http://jsip.java.net/
  2. Pjsip: http://www.pjsip.org/
  3. Mjsip: http://mjsip.org/mjua.html
  4. Дубанго: http://www.doubango.org/

Существуют различные проекты с открытым исходным кодом, которые использовали эти библиотеки в своих проектах.

  1. Джайнский глоток: Не используется в "известном" приложении.
  2. Sipdroid использует MjSip
  3. Csipsimple использует PjSip
  4. Imsdroid использует уданго.

SIP-стеки с открытым исходным кодом: стандартная реализация Android SDK (API > 9). Преимущества: документация доступна. Легко понять. Недостатки: не все устройства поддерживаются из-за ограничений операторов. Работает только по WiFi. Не могу изменить кодеки.

Сторонний разработчик: JainSIP Преимущества: проект Oracle (Sun) ==> Активная разработка. Выглядит проще, чем MjSIP (больше документации). Недостатки: нет Android 2.3 с использованием внешнего стека JAIN-SIP(J-SIP) | Classpath

Сторонний: MjSIP Преимущества: на нем построен SipDroid. (доступен исходный код) (еще один проект - red5phone) Недостатки: не полностью соответствует RFC?. Отсутствие учебных пособий (хотя Javadocs доступны). Разработка почти мертвая

Сторонний разработчик: фреймворк Doubango Преимущества: на нем построен IMSDroid. (доступен исходный код) Недостатки: размер сгенерированного файла apk, как правило, "тяжелый" (>15 МБ, как указано здесь)

Последовало от

Другие вопросы по тегам