Этот пакет содержит четыре базовых класса: SipManager, SipProfile, SipSession и SipAudioCall. Класс SipManager — ядро этого пакета, предоставляющее доступ к остальной функциональности SIP. Для получения объекта SipManager должен быть вызван метод newInstance класса SipManager. Затем с помощью этого объекта можно получить объект SipSession для большей части функциональности SIP или же объект SipAudioCall для только голосового звонка. Это значит, что компания Google предоставила в пакете android.net.sip средства, далеко выходящие за рамки стандарта SIP, а именно — возможность установки голосового звонка.
Класс SipProfile используется для определения учетных записей SIP, которые будут общаться друг с другом. Он не указывает непосредственно на устройство конечного пользователя, а на учетную запись SIP у поставщика SIP. Об остальных деталях установки действительных соединений позаботятся серверы.
Класс SipSession — место, где происходит вся “магия”. Настройка сеанса включает SipProfile, чтобы приложение смогло себя представить серверу поставщика SIP. Также передается экземпляр SipSession.Listener, который будет уведомляться обо всех событиях. Как только объект SipSession установлен, приложение готово обращаться к другому объекту SipProfile либо принимать входящие звонки. Слушатель поддерживает множество методов обратного вызова, так что приложение сможет правильно реагировать на изменения состояний в сеансе.
Что касается версии Android., то легче всего сделать это с использованием SipAudioCall. Вся логика заключается в привязке микрофона и динамика к потокам данных, чтобы можно было общаться с противоположной стороной. В классе SipAudioCall предусмотрено множество методов, предназначенных для управления удержанием разговора, временным отключением звука и т.п. Также осуществляется обработка всех аудиофрагменто. Все, что выходит за рамки этого, придется разрабатывать самостоятельно. Класс SipSession имеет метод makeCall, предназначенный для выполнения исходящего звонка. Главным параметром является описание сеанса (типа String). Здесь и нужна дополнительная работа. Построение описания сеанса требует форматирования в соответствии с описанным ранее протоколом SDP (Session Description Protocol — протокол описания сеанса). Для понимания описания входящего сеанса требуется его разбор в соответствии с SDP. Документацию по стандарту SDP можно найти по адресу http://tools.ietf.org/html/rfc, но, http://monitorus.ru/ к сожалению, в Android SDK не предлагается никакой поддержки SDP. Однако благодаря усилиям нескольких разработчиков, существует пара бесплатных приложений SIP для Android со встроенной поддержкой SDP — Sipdroid (http://code.google.com/p/sipdroid/) и CSipSimple (http: //code.google.com/p/csipsimple/).
Мы пока еще не начали говорить о кодеках управления видеопотоками между клиентами SIP, хотя Sipdroid обладает этим средством. Другой очень привлекательный аспект SIP состоит в способности устанавливать конференц-связь между более чем двумя людьми. Эта тема выходит за рамки настоящей книги, но вы должны по достоинству оценить то, что предлагает SIP.
Обратите внимание, что для правильного функционирования приложения SIP требуют как минимум прав android.permission.USE_SIP и android.permission.INTERNET. Если применяется SipAudioCall, необходимо также право android.permission. RECORD_AUDIO. И, предполагая, что будет использоваться Wi-Fi, нужно добавить права
android.permission.ACCESS_WIFI_STATE и android.permission.WAKE_LOCK. Также имеет смысл добавить в файл AndroidManifest.xml следующий дескриптор в качестве дочернего для , чтобы приложение могло быть установлено на устройствах с аппаратной поддержкой SIP:
Опубликовал Kest
February 14 2015 13:15:09 ·
0 Комментариев ·
3588 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.