Реализация SIP-телефонии для мобильных устройств с операционной системой Android

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Malyshev-Vitalij-544.docx

— 675.71 Кб (Скачать)

 

answercall () – ответить на входящий звонок. В данном методе происходит обращение к библиотеке, ответственной за передачу звука по протоколу RTP.

 

rejectcall () – отклонить входящий звонок. В данном методе происходит обращение к библиотеке, ответственной за передачу звука по протоколу RTP.

 

getTransportString (short transport) – получить текстовое представление транспортного протокола. Используется при инициализации SipProvider, который отвечает за коммуникацию SIP сообщений с сервером.

 

У класса есть методы, которые  выглядят как onUa*, - это callback методы из UserAgent. В указанных методах соответствующие события передаются всем слушателям, например, сервису.

 

  1. Реализация и применение решения

Приложение написано на языке Java для платформы Android с помощью Android SDK 1.6.

При изучении рынка было обнаружено несколько библиотек  с открытым кодом, реализующих функциональность SIP телефонии. Приложения для Android пишутся  на языке Java, поэтому интересовали библиотеки, написанные на Java.

  • MjSip
  • JSIP[8]
  • Jain SIP[9]

Библиотеки основываются на правилах установления сессии (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 или обратно, в зависимости от ширины доступного интернет канала или качества звука.

Приложение предоставляет  пользователю гибкие возможности клиента, однако конкурентные решения предлагают более широкие возможности настройки  клиента. В частности, в конкурентных решениях есть возможность задавать способ кодирования звука, в то время как “MC Client” использует только G.711.

В данный момент приложение используется фирмой Comdasys, Inc.

 

  1. Сравнительный анализ

На данный момент существует ряд приложений, реализующих VoIP телефонию  на операционной системе Android. Большая  часть является закрытыми продуктами, созданными для решения конкретных задач:

Параметр сравнения

MC Client

Skype Lite[13]

Fring[14]

Sip Agent[15]

Sipdroid[16]

Возможность совершения звонков  через интернет

û

Работа на всех версиях  ОС

û

û

û

Тесная интеграция с GSM связью

Обеспечивается функциональностью  “Handover”

û

û

û

û

Возможность высокого сжатия звука

û

G.711

û

Звука нет

û

Speex[17]

Speex

Высокое качество звука

û

Звука нет

û

Использование стандартной встроенной телефонной книги

û

û

Возможность чата

û

û

û

Поддержка протоколов, отличных от SIP

û

Skype

ICQ, SIP, Google Talk, AIM, MSN Messenger, Yahoo,

Twitter

û

û

Использование произвольного  сервера

û

skype.com

û

fring.com

Тонкие возможности настройки  клиента

û

û


 

Таким образом, ни одно из существующих готовых решений не предоставляет  функциональности, отвечающей задачам, поставленным в данной дипломной  работе. Также дипломный проект MC Client долгое время являлся единственным клиентом VoIP телефонии на ОС Android (до выхода Android версии 1.6[18], где была предоставлена через API возможность получить доступ к звуку).

  1. Заключение

В рамках данного дипломного проекта был предложен способ получить доступ к звуку на всех версиях ОС Android.

Также была предложена концепция  “Handover” - функционала клиента, который позволяет незаметно для пользователя переключать тип звонка с SIP на GSM или обратно, в зависимости от ширины доступного интернет канала или качества звука.

Описанный способ получения доступа к звуку и функционал “Handover” были реализованы в проекте SIP телефонии “MC Client”, который является конечным результатом дипломной работы.

Реализованное решение имеет практическую ценность и уже сейчас используется в коммерческой системе Comdasys, Inc.

Был произведен анализ приложений, решающих схожие задачи, и проведено  сравнение представленных в них  возможностей с возможностями предложенного  решения.

Предложенное решение  решает поставленные задачи лучше, чем имеющиеся в открытом доступе приложения, однако конкурентные решения предлагают более широкие возможности конфигурации клиента. Предложенное решение разрабатывалось  для использования на мобильных устройствах на платформе Android с учётом её особенностей.

В перспективе, планируется  внедрить возможность текстового чата в клиент, а также возможность совершения видео звонков. Для уменьшения трафика между клиентом и сервером планируется использовать более прогрессивный кодек звука iLBC[19]. Также планируется сделать весь трафик более защищенным путем внедрения TLS[20] для шифрования SIP сообщений и внедрить протокол SRTP[21] вместо незащищенного RTP для передачи звука.

  1. Список литературы

[1] Android operating system

http://source.android.com/

 

[2] Open Handset Alliance – OHA - Members

http://www.openhandsetalliance.com/oha_members.html

 

[3] Android platform versions – statistics

http://developer.android.com/resources/dashboard/platform-versions.html

 

[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-H.323/e

 

[6] Skype and SIP comparison

http://www.rtx.dk/Default.aspx?ID=949

 

[7] JNI, Java Native Interface

http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/jniTOC.html

 

[8] Java SIP Library, JSIP

http://sourceforge.net/projects/jsip/

 

[9] Jain SIP, Java specification for SIP Signaling

http://wiki.java.net/bin/view/Communications/JainSIP

 

[10] RFC 3261

http://www.ietf.org/rfc/rfc3261.txt

 

[11] Standard 64, RTP: A Transport Protocol for Real-Time Applications

http://tools.ietf.org/html/rfc3550

 

[12] G.711, Audio Codec

http://www.itu.int/rec/T-REC-G.711/e

 

[13] Android, Skype Lite Source http://share.skype.com/sites/skypegear/2009/01/video_skype_lite_on_android.html

 

[14] Android, Fring for Android

http://www.androlib.com/android.application.com-fring-xmnt.aspx

 

[15] Android, SIP Agent application

http://www.androlib.com/android.application.com-bw-sip-ui-xqCB.aspx

 

[16] Android, Sipdroid client

http://www.androlib.com/android.application.org-sipdroid-sipua-BCw.aspx

 

[17] Speex, Audio Codec

http://www.speex.org/

[18] Android 1.6 released

http://android-developers.blogspot.com/2009/09/android-16-sdk-is-here.html

 

[19] iLBC

http://www.ilbcfreeware.org/

 

 

[20] TLS, Transport Layer Security

http://www.ietf.org/rfc/rfc2246.txt

 

[21] SRTP, Secured RTP

http://www.ietf.org/rfc/rfc3711.txt

 


Информация о работе Реализация SIP-телефонии для мобильных устройств с операционной системой Android