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
- Джайнский глоток: http://jsip.java.net/
- Pjsip: http://www.pjsip.org/
- Mjsip: http://mjsip.org/mjua.html
- Дубанго: http://www.doubango.org/
Существуют различные проекты с открытым исходным кодом, которые использовали эти библиотеки в своих проектах.
- Джайнский глоток: Не используется в "известном" приложении.
- Sipdroid использует MjSip
- Csipsimple использует PjSip
- 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 МБ, как указано здесь)
Последовало от