Автор: Пользователь скрыл имя, 25 Февраля 2013 в 05:48, дипломная работа
После появления первого устройства под управлением Android, стало возможным предоставить пользователю возможность использовать Интернет-телефонию так же, как и GSM телефонию. Широкополосный доступ в Интернет, многозадачность операционной системы дали возможность пользователю забыть о проблемах, связанных с Интернет связью. До Android самые удобные приложения Интернет-телефонии предлагала ОС iPhone, но с ее ограниченной многозадачностью невозможно использовать другие приложения вместе с Интернет-телефонией, что означает, например, невозможность читать документы и одновременно принимать звонки.
1. Введение 5
1.1. Постановка задачи 5
1.2. Этапы работы 8
1.3. Введение в предметную область 10
1.3.1. Общие сведения о SIP телефонии 10
1.3.2. Принципы SIP протокола 11
1.3.3. Архитектура сети 12
1.3.4. Сообщения протокола SIP 13
1.3.5. Сравнение SIP с H.323 15
1.3.6. Сравнение SIP с Skype 17
2. Описание предлагаемого решения 19
2.1. Выбор платформы решения 19
2.2. Описание использования приложения 20
3. Реализация решения 24
3.1. Реализация низкоуровнего модуля, работающего со звуком напрямую 24
3.1.1. AudioRecordWrapper 26
3.1.2. AudioTrackWrapper 27
3.1.3. QueuedBuffer 28
3.2. Принцип работы “Handover” 29
3.3. Архитектура проекта “MC Client” 31
3.4. Ключевые классы элементов архитектуры. 33
3.4.1. Activity. 33
3.4.2. SipServiceWrapper 35
3.4.3. Service 36
3.4.4. SIPEngine 39
4. Реализация и применение решения 43
5. Сравнительный анализ 45
6. Заключение 47
7. Список литературы 48
answercall () – ответить на входящий звонок. В данном методе происходит обращение к библиотеке, ответственной за передачу звука по протоколу RTP.
rejectcall () – отклонить входящий звонок. В данном методе происходит обращение к библиотеке, ответственной за передачу звука по протоколу RTP.
getTransportString (short transport) – получить текстовое представление транспортного протокола. Используется при инициализации SipProvider, который отвечает за коммуникацию SIP сообщений с сервером.
У класса есть методы, которые выглядят как onUa*, - это callback методы из UserAgent. В указанных методах соответствующие события передаются всем слушателям, например, сервису.
Приложение написано на языке Java для платформы Android с помощью Android SDK 1.6.
При изучении рынка было обнаружено несколько библиотек с открытым кодом, реализующих функциональность SIP телефонии. Приложения для Android пишутся на языке Java, поэтому интересовали библиотеки, написанные на Java.
Библиотеки основываются на правилах установления сессии (SIP, Session Initial Protocol), описанных в стандарте RFC 3261[10], поэтому алгоритм один и тот же во всех библиотеках. Была выбрана библиотека MjSip, так как она наиболее полно реализует требующиеся возможности.
Звук идет по протоколу RTP[11]. В качестве кодека звука используется G.711[12], так как данный кодек наиболее просто реализуется и обеспечивает хорошее качество звука.
Отличительной особенностью приложения является работа приложения на всех версиях ОС Android. Для указанных целей реализована низкоуровневая схема получения непрерывных данных с микрофона и отправления данных на динамики мобильного устройства. Низкоуровневая реализация доступа к звуку собрана в виде библиотеки с помощью компилятора “arm gcc” в формате “.so”, понятном для Android, отдельно для Android версий 1.1 и 1.5. Библиотеки успешно подключены к проекту “MC Client” и используются в проекте.
Также особенностью работы приложения является функциональность “Handover”, которая позволяет практически незаметно для пользователя переключать тип звонка с SIP на GSM или обратно, в зависимости от ширины доступного интернет канала или качества звука.
Приложение предоставляет
пользователю гибкие возможности клиента,
однако конкурентные решения предлагают
более широкие возможности
В данный момент приложение используется фирмой Comdasys, Inc.
На данный момент существует ряд приложений, реализующих VoIP телефонию на операционной системе Android. Большая часть является закрытыми продуктами, созданными для решения конкретных задач:
Параметр сравнения |
MC Client |
Skype Lite[13] |
Fring[14] |
Sip Agent[15] |
Sipdroid[16] |
Возможность совершения звонков через интернет |
✓ |
û |
✓ |
✓ |
✓ |
Работа на всех версиях ОС |
✓ |
✓ |
û |
û |
û |
Тесная интеграция с GSM связью |
✓ Обеспечивается |
û |
û |
û |
û |
Возможность высокого сжатия звука |
û G.711 |
û Звука нет |
û |
✓ Speex[17] |
✓ Speex |
Высокое качество звука |
✓ |
û Звука нет |
✓ |
û |
✓ |
Использование стандартной встроенной телефонной книги |
✓ |
û |
✓ |
✓ |
û |
Возможность чата |
û |
✓ |
✓ |
û |
û |
Поддержка протоколов, отличных от SIP |
û |
✓ Skype |
✓ ICQ, SIP, Google Talk, AIM, MSN Messenger, Yahoo, |
û |
û |
Использование произвольного сервера |
✓ |
û skype.com |
û fring.com |
✓ |
✓ |
Тонкие возможности настройки клиента |
✓ |
û |
û |
✓ |
✓ |
Таким образом, ни одно из существующих готовых решений не предоставляет функциональности, отвечающей задачам, поставленным в данной дипломной работе. Также дипломный проект MC Client долгое время являлся единственным клиентом VoIP телефонии на ОС Android (до выхода Android версии 1.6[18], где была предоставлена через API возможность получить доступ к звуку).
В рамках данного дипломного проекта был предложен способ получить доступ к звуку на всех версиях ОС Android.
Также была предложена концепция “Handover” - функционала клиента, который позволяет незаметно для пользователя переключать тип звонка с SIP на GSM или обратно, в зависимости от ширины доступного интернет канала или качества звука.
Описанный способ получения доступа к звуку и функционал “Handover” были реализованы в проекте SIP телефонии “MC Client”, который является конечным результатом дипломной работы.
Реализованное решение имеет практическую ценность и уже сейчас используется в коммерческой системе Comdasys, Inc.
Был произведен анализ приложений, решающих схожие задачи, и проведено сравнение представленных в них возможностей с возможностями предложенного решения.
Предложенное решение решает поставленные задачи лучше, чем имеющиеся в открытом доступе приложения, однако конкурентные решения предлагают более широкие возможности конфигурации клиента. Предложенное решение разрабатывалось для использования на мобильных устройствах на платформе Android с учётом её особенностей.
В перспективе, планируется внедрить возможность текстового чата в клиент, а также возможность совершения видео звонков. Для уменьшения трафика между клиентом и сервером планируется использовать более прогрессивный кодек звука iLBC[19]. Также планируется сделать весь трафик более защищенным путем внедрения TLS[20] для шифрования SIP сообщений и внедрить протокол SRTP[21] вместо незащищенного RTP для передачи звука.
[1] Android operating system
http://source.android.com/
[2] Open Handset Alliance – OHA - Members
http://www.
[3] Android platform versions – statistics
http://developer.android.com/
[4] MjSip, A complete java-based implementation of a SIP stack
http://www.mjsip.org/
[5] H.323, recommendation from the ITU Telecommunication Standardization Sector (ITU-T)
http://www.itu.int/rec/T-REC-
[6] Skype and SIP comparison
http://www.rtx.dk/Default.
[7] JNI, Java Native Interface
http://java.sun.com/j2se/1.4.
[8] Java SIP Library, JSIP
http://sourceforge.net/
[9] Jain SIP, Java specification for SIP Signaling
http://wiki.java.net/bin/view/
[10] RFC 3261
http://www.ietf.org/rfc/
[11] Standard 64, RTP: A Transport Protocol for Real-Time Applications
http://tools.ietf.org/html/
[12] G.711, Audio Codec
http://www.itu.int/rec/T-REC-
[13] Android, Skype Lite Source http://share.skype.com/sites/
[14] Android, Fring for Android
http://www.androlib.com/
[15] Android, SIP Agent application
http://www.androlib.com/
[16] Android, Sipdroid client
http://www.androlib.com/
[17] Speex, Audio Codec
http://www.speex.org/
[18] Android 1.6 released
http://android-developers.
[19] iLBC
http://www.ilbcfreeware.org/
[20] TLS, Transport Layer Security
http://www.ietf.org/rfc/
[21] SRTP, Secured RTP
http://www.ietf.org/rfc/
Информация о работе Реализация SIP-телефонии для мобильных устройств с операционной системой Android