Разработка рабочего прототипа приложения, которое будет облегчать использование функции телефонии DTMF Callback на устройствах с Android - Дипломная работа

бесплатно 0
4.5 237
Особенности сотовой сети. Использование функции телефонии DTMF Callback на устройствах с Android. Обзор рынка VoIP связи и услуги международного роуминга. Проведение тестирования рабочего прототипа приложения с функцией телефонии DTMF Callback.


Аннотация к работе
Благодаря развитию интернет технологий получила популярность IP-телефония, которая имеет ряд плюсов перед обычной сотовой телефонией, например, защищенный от прослушиваний разговор или запись разговора на сервер, использование коротких номеров, связь без привлечения провайдеров. Поэтому цены на тариф со стабильным интернетом, необходимым для звонков посредством IP телефонии, могут быть завышены. Существует способ связи с VOIP сервером, который принято называть callback, когда серверу сообщается на какой номер нужно позвонить, и сервер перезванивает абоненту, соединяя с номером, на который абонент звонит. Существует способ, через который можно обеспечить связь с сервером VOIP через сотовый вызов, для этого используется DTMF Callback по следующему алгоритму: 1. Существует способ Callthrough, который в отличие от Callback не требует перезвона сервера абоненту «A», но в связи с этим, абонент «A» платит за исходящий вызов.Для обычного абонента, который говорит по 20-60 минут в день такие тарифы подходят. Если абоненту приходится звонить в другие страны, то стоит выбрать другой тариф. Тарифы на звонки в другие страны были условно разделены на три группы: 1. Для сравнения по тарифам для родственников и друзей туристов взято пять популярных курортных направлений [21]:: 1. Стоимость перехода на данный тариф составляет 150 ?, ежемесячной абонентской платы за тариф нет, зато есть ежедневная плата в 4,45 ? за входящие в тариф опции.МТС в опции «Выгодные международные звонки» предоставляет звонки в Китай по 1,5 ? в минуту, США по 5 ? в минуту, Германию и Великобританию по 10 ? в минуту, в Японию по 25 ? в минуту. Мегафон в опции «Звони во все страны» предоставляет звонки в Китай по 1 ? в минуту, США по 4 ? в минуту, Германию по 6 ? в минуту, Великобританию по 11 ? в минуту, в Японию по 9 ? в минуту.Многие операторы предоставляют услуги роуминга, когда есть возможность выходить с SIM-картой своего оператора в сеть другого оператора. Для некоторых направлений входящие вызовы первые 10 минут могут быть бесплатны, но после израсходования лимита в 200 минут на месяц, каждая входящая минута будет стоить по 25 ? в минуту. Услуга предлагает 60 минут в день для входящих и исходящих на российские номера. Исходящие звонки на российские номера(1 минута и начиная с 6 минуты), рублей в минуту 50 65 65 60 60 Исходящие звонки на российские номера(1 минута и начиная с 6 минуты), рублей в минуту 200 99 85 85 115Международный роуминг в отличие от других тарифов может иметь платный входящий вызов, цены могут достигать 200 ? за минуту. Цены на VOIP могут зависеть от курса валюты или указываться в другой валюте, для сравнения все цены будут переведены в рубли по курсу на 26.05.2015 указанные на сайте Центрального банка Российской [25].Курс на данную дату: Таблица 10. Skype Skype предлагает следующие тарифы для звонков на российские номера сотовых телефонов [26]: Таблица 11. Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Кипра: Таблица 12. Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Турции: Таблица 13.На практике, интернет связь имеет ограниченную зону покрытия, а сама услуга по предоставлению интернета стоит денег. На сервер VOIP отправляется номер, куда абонент желает позвонить, а сервер уже перезванивает абоненту по каналу сотовой связи, после этого начинает дозваниваться до другого абонента и соединяет этих двух абонентов. В случае если нет возможности использовать интернет, можно отправить SMS на номер VOIP сервера с номером абонента «B», которому звонит абонент «A». Существует еще один способ передать серверу номер абонента «B» от абонента «A» - с помощью DTMF сигнала. Эти программы отлавливают входящий или исходящий вызов и прибавляют к нему так называемый prefix или suffix, то есть дополняют номер телефона до номера или после, получается такой вид номера: prefix xxxxxxxxx suffix , где x - любой символ номера.Для разработки на Python под Android можно использовать одно из нескольких решений [34] указанных в таблице: Таблица 18. Однако при использовании специфичных Android-функций нужно использовать Android API. В интерфейсе Android SDK Manager для одной версии Android можно выбрать несколько образов, которые будут эмулировать разные устройства. Одним из важных инструментов является Android Debug Bridge (adb), программа, предназначенная для отладки устройств на Android. Android Studio является мощным инструментом, который рекомендуется использовать при разработке под Android, поэтому было принято решение использовать ее в разработке. телефония callback android тестированиеРезультатом разработки стало готовое приложение под названием DTMF CALLBACK, которое упрощает использование функции телефонии Callback и отвечает минимальным требованиям к прототипу. Тестирование приложения проводилось на трех устройствах: 1. В интерфейсе телефона выбиралось приложение Контакты (Contacts) и в нем выполнялась попытка позвонить на номер одного из контактов. Первое устройство предлагало использовать

Введение
Развитие научно-технического прогресса в мире способствовало повсеместному быстрому распространению в начале 21 века сотовой связи, это обусловлено необходимостью находиться постоянно в поле доступа, в местах, где невозможна стационарная телефонная связь.

Благодаря тенденции к снижению цен на рынке, почти каждому гражданину России стал доступен свой личный мобильный телефон.

Множество операторов связи предоставляют услуги сотовой связи. Благодаря развитию интернет технологий получила популярность IP-телефония, которая имеет ряд плюсов перед обычной сотовой телефонией, например, защищенный от прослушиваний разговор или запись разговора на сервер, использование коротких номеров, связь без привлечения провайдеров.

Существует несколько способов связи сервера VOIP и мобильного телефона. Один из самых очевидных, это интернет соединение, за которое обычно нужно платить оператору сотовой связи, которому не особо выгодно делать интернет-связь для VOIP дешевле, чем собственные услуги по телефонии. Поэтому цены на тариф со стабильным интернетом, необходимым для звонков посредством IP телефонии, могут быть завышены.

Существует способ связи с VOIP сервером, который принято называть callback, когда серверу сообщается на какой номер нужно позвонить, и сервер перезванивает абоненту, соединяя с номером, на который абонент звонит. Номер этот можно передать с помощью сети интернет, SMS или тонального набора (DTMF).

Не всегда есть возможность отправить SMS или воспользоваться интернетом, особенно, если абонент находится в роуминге. Часто, единственный доступный способ связи - это «традиционный» вызов с помощью сотовой связи. Существует способ, через который можно обеспечить связь с сервером VOIP через сотовый вызов, для этого используется DTMF Callback по следующему алгоритму: 1. Абонент «A» звонит на номер сервера телефонии

Рисунок 1. Шаг 1

2. Сервер телефонии обрывает связь

Рисунок 2. Шаг 2

3. Сервер телефонии перезванивает абоненту «A» и ждет ответа

Рисунок 3. Шаг 3

4. Абонент «A» отвечает на звонок

Рисунок 4. Шаг 4

5. В тональном наборе абонент «A» набирает номер абонента «B»

Рисунок 5. Шаг 5

6. Сервер инициализирует звонок абоненту «B»

Рисунок 6. Шаг 6

7. После инициализации сервер связывает соединение абонента «A» и абонента «B». Абонент «A» уже слышит гудки дозвона до абонента «B».

Рисунок 7. Шаг 7

Абонент «B» отвечает на звонок. Оба пользователи могут обмениваться голосовыми сообщениями.

Рисунок 8. Шаг 8

В итоге у абонента «A» и абонента «B» совершается входящий звонок, и они могут общаться друг с другом через сервер телефонии.

Существует способ Callthrough, который в отличие от Callback не требует перезвона сервера абоненту «A», но в связи с этим, абонент «A» платит за исходящий вызов.

Основание для разработки

Основной недостаток инициализации callback с помощью DTMF в том, что абоненту «A» надо вручную набирать номер абонента «B» после того как ему перезвонил сервер. В журнале вызовов на телефоне абонента «A» в исходящих звонках остается номер, который он набирал, то есть номер сервера, а во входящих и номер callback, который перезвонил ему. Данная информация для пользователя является малоинформативной. Сервер телефонии может быть настроен так, что абоненту «A» перезванивает callback с разных номеров. Это значит, что в журнале вызовов у пользователя будет большое количество незнакомых номеров. Данная информация является лишней, и ее следует скрывать от абонента. Часто предоставляющие callback сервисы обходятся без прямого доступа по DTMF, а используют интернет подключение, SMS или специальную SIM-карту.

Цель разработки

Разработать рабочий прототип приложения, которое будет облегчать использование функции телефонии DTMF callback на устройствах с android.

Обзорно-аналитическая часть

Сотовая связь

Сотовая связь - беспроводная связь, зоны доступа которой разделены на шестиугольные ячейки похожие на соты. Одну такую зону доступа обеспечивает базовая станция. Множество таких базовых станций, которые составляют зоны из сот, называют сотовой сетью, устройства, которые пользуются сотовой сетью - сотовые телефоны. В сотовой сети, каждая ячейка использует различный набор частот от соседних клеток для избегания помех и чтобы обеспечить гарантированную пропускную способность для каждой ячейки.

Особенности сотовой сети: · Использование множества базовых станций дает больше возможностей, чем использование одного большого передатчика. Каждой ячейке может быть присвоено несколько частот, соответствующих базовой станции. Группу частот можно использовать повторно, если соседние клетки используют другие частоты.

Рисунок 9. Схема повторного использования частот (F1-F4 - частоты)

·

Мобильные устройства выделяют меньше энергии на связь с башней, так как требуется менее мощный сигнал, чтобы найти ее вследствие более близкого расположения башни связи

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

При расположении ячеек оптимально избегать перекрытия зон ячеек, между ячейками не должно быть пустого пространства. Поэтому геометрической формой покрытия могут быть такие фигуры, как треугольники, квадраты или шестиугольники. Форма покрытия от антенн больше всего похожа на шестиугольник [1].

Устройства, которые управляют сигналами и маршрутизируют их от одного сотового телефона к другому, называются автоматическими телефонными станциями (АТС). На данный момент почти все АТС являются электронными.

Номеронабиратель (dialer) - часть интерфейса телефонного аппарата, которая позволяет передать номер телефонного аппарата, с которым АТС должна соединить. Долгое время использовались импульсные dialer’ы, которые формировали импульсы, где каждой цифре соответствовало свое количество импульсов [2]. На телефонном аппарате находился диск с 10 дырками. Принцип соединения с АТС был таким: На телефонном аппарате прокручивается диск от точки с указанной цифрой, который заводит пружину. Когда отпускается диск, пружина начинает разгибаться, диск начинает двигаться в обратную сторону. Набор импульса соответствует замыканию и размыканию телефонной линии. Между набором импульсов делаются паузы, чтобы отличить набор одного символа от другого. Данный способ набора достаточно неудобный, абоненту приходится несколько раз отводить диск и ждать пока он вернется на место. Впоследствии появился импульсный кнопочный набор, который избавил от такого недостатка.

На данный момент для набора номера используется двухтональный многочастотный сигнал (Dual Tone Multi-Frequency, DTMF). DTMF может быть использован для внутренних команд телефонной сети. В DTMF передаваемая цифра кодируется сигналом полученным суммированием двух синусоидальных напряжений определенной частоты [3]. Используется две группы по четыре частоты звукового диапазона в каждой.

Таблица 1. Соответствие частот и символов при DTMF наборе

1 2 3 A 697 Гц

4 5 6 B 770 Гц

7 8 9 C 852 Гц

* 0 # D 941 Гц

1209 Гц 1336 Гц 1477 Гц 1633 Гц

АТС может отвечать в формате DTMF, например такие сигналы как «занято», «готовность», «контроль посылки вызова». В отличии от импульсов, DTMF можно передавать по аудиоканалу.

Таблица 2. Ответы АТС в формате DTMF

Сигнал Частоты

«занято» 480 Гц 620 Гц

«готовность» 350 Гц 440 Гц ringback (US) 440 Гц 480 Гц

Direct Inward System Access (DISA) - функция прямого доступа, возможность получения абонентом доступа к управлению телефонной станицей или сервером телефонии посредством DTMF сигналов с телефона.

Обзор рынка сотовой связи

Выручка компаний, предоставляющих сотовую связь в России, растет, о чем свидетельствуют их отчеты [4] [5] Из тех же отчетов видно, что большая доля доходов приходится на мобильную связь. В интересах, как обычного частного пользователя, так и корпоративного игрока, является сокращение расходов на мобильную связь. Одним из способов является анализ используемых услуг за месяц и выбор наиболее подходящего тарифа у мобильного оператора.

Рынок мобильной связи в Москве состоит из трех игроков, распределение которых можно увидеть на [6]:

Диаграмма 1: распределение крупных игроков на сотовом рынке

Сравнение местных тарифов по Москве

У трех крупных игроков на московском рынке имеются схожие пакетные тарифы, которые можно сравнить. Например, тарифы класса «Smart» у МТС, «Все включено» у Мегафона и «Все за» у Билайн. Эти тарифы предлагают пакет опций и абонентскую плату за них. Сравним схожие по цене тарифы из этих классов. В пакеты услуг могут входить SMS, MMS, интернет и другие услуги, но в данном разборе они не учитываются, так как нас интересует именно цена звонка. По этой же причине нет подробного описания нюансов тарифов, если они прямо не влияют на цену, однако можно заметить, что качество связи в разных районах местности может сильно отличаться у операторов. Также нет нужды считать стоимость звонков, если превышен месячный лимит тарифа, так как человек, который контролирует расходы, будет выбирать себе тариф правильно, однако стоит отметить, что цена после превышения лимита может быть достаточна высокой. Стоит отметить, что входящие внутри России для всех трех пакетных групп бесплатные.

Минимальными по цене являются пакетные тарифы «Smart mini» [7] - 200 ?, «Все включено XS» [8] - 199 ? и «Все за 200» [9] - 200 ?. Имеются некоторые особенности для звонков внутри сети оператора. В «Smart mini» и «Все включено XS» звонки по всей России, а во «Все за 200» только по Москве и Московской области. Цены указаны на момент 15.05.2015.

Таблица 3. Минимальные пакетные тарифы

МТС Билайн Мегафон

Цена тарифа, рублей в месяц 200 199 200

Звонки внутри сети. Москва и МО, бесплатные минуты 1000 Безлимит 300

Звонки внутри сети. Россия, бесплатные минуты

Звонки другим операторам. Москва и МО, рублей в минуту 1,5 1,6 2

Звонки другим операторам. Россия, рублей в минуту 10 9,9 10

Как видно из таблицы, тарифные опции весьма похожи. Дешевле всего обходятся звонки внутри сети. Абонентам других операторов звонить дороже, особенно за пределы Московской области.

Хоть данный тариф не предназначен для звонков в другие страны, у человека может возникнуть необходимость позвонить за пределы своей страны, поэтому стоит рассмотреть международные тарифы на звонки в другие страны.

Таблица 4. Минимальные пакетные тарифы(звонки за границу)

МТС Билайн Мегафон

СНГ, рублей в минуту 29 24 20

Европа, рублей в минуту 49 35 30

Остальные страны, рублей в минуту 70 60

США, рублей в минуту 35 30

Канада, рублей в минуту 35 30

Австралия и Океания, рублей в минуту 40

Азия, рублей в минуту 50

СНГ внутри сети, рублей в минуту 12

Северная и центральная Америка (без США и Канады), рублей в минуту 40

Как видно из таблицы, тарифы на звонки в другие страны уже отличаются достаточно сильно. Билайн предоставляет возможность по низкой цене звонить на номера Билайн в других странах. У Мегафона больше различий цен для разных стран, а у МТС наоборот единая цена для Европы и единая цена для всех остальных стран.

В следующей ценовой категории (малые пакетные тарифы) идут тарифы: «Smart» [10] - 450 ?, «Все включено S» - 390 ? [11] и «Все за 400» [12] - 400 ?.

Таблица 5. Малые пакетные тарифы

МТС Билайн Мегафон

Цена тарифа, рублей в месяц 450 400 390

Звонки внутри сети. Москва и МО, бесплатные минуты Безлимит Безлимит Безлимит

Звонки внутри сети. Россия, бесплатные минуты 400

Звонки другим операторам. Москва и МО, бесплатные минуты 500 400

Звонки другим операторам. Россия, рублей в минуту 10 9,9 10

Как и в случае с минимальными пакетными тарифами, условия весьма схожи, но цена уже различается.

Цены на звонки в другие страны у МТС для пакетов типа «Smart» не отличаются, как и у Мегафон для пакетов «Все включено», а вот у Билайн в пакетах «Все за» цены на за границу немного отличаются: · В тарифе «Все за 400»: условия «Все за 200» первые 10 минут в день стоят 5 ?, если звонить в страны СНГ, Крым и Севастополь.

· В тарифе «Все за 600»: условия «Все за 400» первые 10 минут в день стоят 7 ?, если звонить в Азербайджан, Беларусь и Молдову

· В тарифе «Все за 900»: условия «Все за 600» первые 10 минут в день стоят 5 ?, если звонить в Европу, США и Молдову

· В тарифе «Все за 1500»: условия «Все за 900» в Мальдивы, Мадагаскар, Бурунди, КНДР, Папуа-Новая Гвинея, Сейшельские острова, Сомали, Токелау, Тунис одна минута стоит 55 ?

В следующей ценовой категории (средние пакетные тарифы) идут тарифы: «Все включено M» - 590 ? [13] и «Все за 600» [14] - 400 ?, у МТС в данной ценовой категории пакетного тарифа нет.

Таблица 6. Средние пакетные тарифы

Билайн Мегафон

Цена тарифа, рублей в месяц 600 590

Звонки внутри сети. Москва и МО, бесплатные минуты Безлимит Безлимит

Звонки внутри сети. Россия, бесплатные минуты 600

Звонки другим операторам. Москва и МО, бесплатные минуты 600

Звонки другим операторам. Россия, рублей в минуту 9,9 3

При равных местных тарифах, цена на звонки другим операторам по России у Мегафон в 3,3 раза дешевле.

В следующей ценовой категории (пакетные тарифы выше среднего) идут тарифы: «Smart » [15] - 900 ? и «Все за 900» [16] - 900 ?.

Таблица 7. Тарифные пакеты выше среднего

МТС Билайн

Цена тарифа, рублей в месяц 900 900

Звонки внутри сети. Москва и МО, бесплатные минуты Безлимит Безлимит

Звонки внутри сети. Россия, бесплатные минуты

Звонки другим операторам. Москва и МО, бесплатные минуты 1100 1000

Звонки другим операторам. Россия, рублей в минуту 3 9,9

При равных местных тарифах, цена на звонки другим операторам по России у МТС в 3,3 раза дешевле.

В следующей ценовой категории (большие тарифные пакеты) идут тарифы: «Smart » [17] - 1500 ?, «Все включено L» [18] - 1290 ? и «Все за 1500» [19] - 1500 ?.

Таблица 8. Большие тарифные пакеты

МТС Билайн Мегафон

Цена тарифа, рублей в месяц 1500 1500 1290

Звонки внутри сети. Москва и МО, бесплатные минуты Безлимит Безлимит Безлимит

Звонки внутри сети. Россия, бесплатные минуты 1800

Звонки другим операторам. Москва и МО, бесплатные минуты 2000 2000

Звонки другим операторам. Россия, бесплатные минуты

Данные местные тарифы имеют почти одинаковые условия.

В последней категории (максимальный тарифный пакет) оказался только Мегафон со своим тарифом «Все включено VIP» [20] - 2500 ?. Данный тариф предлагает 5000 минут для всех звонков по России.

Вывод
Пакетные тарифы весьма выгодные, если использовать их для звонков внутри сети. У конкурирующих операторов цены держатся примерно на одном уровне. Для обычного абонента, который говорит по 20-60 минут в день такие тарифы подходят. Если человеку необходимо разговаривать больше 120 минут в день, то ему придется брать более дорогие тарифные пакеты ценой от 1500 до 2500, что уже достаточно дорого.

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

Тарифы для звонков в другие страны

Тарифы на звонки в другие страны были условно разделены на три группы: 1. Тарифы для родственников и друзей туристов

2. Тарифы для мигрантов

3. Тарифы для бизнесменов

Тарифы для родственников и друзей туристов

Для сравнения по тарифам для родственников и друзей туристов взято пять популярных курортных направлений [21]:: 1. Испания

2. Турция

3. Греция

4. Кипр

5. Италия

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

У МТС имеется тарифная опция «Выгодные международные звонки» [22]. Абонентская плата в месяц составляет 50 ?. Звонки по этим пяти направления будут стоить 10 рублей в минуту. Тарифная опция совместима с другими тарифами, например с «Smart».

У Билайн имеется тариф «Добро пожаловать» [23]. Стоимость перехода на данный тариф составляет 150 ?, ежемесячной абонентской платы за тариф нет, зато есть ежедневная плата в 4,45 ? за входящие в тариф опции. Стоимость звонков в Турцию составляет 6 ? в минуту. К сожалению, информации по другим из пяти туристических стран нет. На странице тарифа по ссылке: http://moskva.beeline.ru/customers/products/mobile/tariffs/details/dobro-pozhalovat/ дана гиперссылка под названием «Согласно тарифам на международную связь».

Рисунок 10. Скриншот области со страницы тарифа Билайн «Добро пожаловать»

Эта гиперссылка ведет на адрес: http://moskva.beeline.ru/customers/products/mobile/roaming/

, переход, на который перенаправляет на адрес: http://moskva.beeline.ru/customers/products/mobile/roaming/roaming-new/

В интерфейсе страницы, содержит три гиперссылки.

Рисунок 11. Интерфейс страницы «Роуминг, междугородная и международная связь»

«Роуминг в путешествиях по миру», «Роуминг в путешествиях по России» и «Звонки из дома в другие города и страны». Очевидно, что цены на звонки в другие страны должны быть по третьей гиперссылке. Страница по этой ссылке предоставляет интерфейс для запроса к серверу Билайн за информацией.

Рисунок 12. Скриншот со страницы «Звонки из дома в другие города и страны» после запроса «Кипр» при тарифе «Добро пожаловать»

Если проверить цену, например, на Кипр, то вместо цен на Кипр будут указаны общие условия тарифа. Отдельных условий для Кипра указанно не будет. В пункте «Звонки в остальные страны» указана гиперссылка под названием «Согласно тарифам на международную связь» с адресом: http://moskva.beeline.ru/customers/products/mobile/roaming/

По которой данной информации нет, как было показано ранее.

Сложно сделать вывод, умышленно ли скрыта информация, или это ошибка проектирования интерфейса. На данный момент вменяемых разъяснений от представителей Билайн я не получил, поэтому считаю невозможным сравнивать тарифы Билайн при отсутствии официальной информации.

Мегафон для звонков в другие страны предлагает опцию «Звони во все страны» [24] За первые 30 дней взимается плата 60 ?, потом ежедневная плата 2 ? в день. Звонки в Италию, Испанию, Кипр и Грецию стоят 6 ? в минуту, а в Турцию 8 ? в минуту.

Тарифы для мигрантов

В тарифах для мигрантов рассмотрены цены на страны СНГ и ближайшего зарубежья.

МТС в опции «Выгодные международные звонки» предоставляет звонки в СНГ (кроме Азербайджана и Белоруссии) по цене 15 ? в минуту и в Азербайджан и Белоруссию по цене 20 ? в минуту.

У Билайн в тарифе «Добро пожаловать» имеются специальные условия для Таджикистана. Для звонков на номера Билайн 1 минута - 7 ?, последующие минуты по 1 ?. Для звонков на номера Билайн Армении, Казахстана, Кыргызстана и на номера Киевстар Украины - 2,5 ? в минуту. Для звонков на другие номера Таджикистана, Армении, Украины, Казахстана, Кыргызстана, а также любые номера Туркменистана - 7 ? в минуту. Звонок в Азербайджан и Беларусь стоит 13 ? в минуту. На номера Узбекистана Билайн - 3 ? в минуту, остальные 4 ? в минуту.

В опции «Звони во все страны» звонки от Мегафон в Азербайджан и Беларусь стоят 15 ? в минуту, в Украину - 10 ? в минуту, Армению, Казахстан и Кыргызстан - 8 ? в минуту, в Таджикистан и Туркменистан - 6 ? в минуту, в Узбекистан - 5 ? в минуту. Также у Мегафон есть специальная опция «Таджикистан » для Таджикистана. Первая минута разговора стоит 7 ?, до 20 минуты минута стоит 1 ?, а с 21 минуты стоит 7 ?.

Тарифы для бизнесменов

Бизнесмен может иметь потребность общаться с любой из стран. Целью данного обзора сравнить уровень цен для разных тарифов, а не создать полное сравнение цен по всем странам, поэтому выбрано 5 стран, куда мог бы позвонить бизнесмен.По рассмотренным туристическим направлениям самым выгодным является опция от Мегафон «Звони во все страны». Данных по Билайн недостаточно.

По рассмотренным направлениям для мигрантов цены у Билайн и Мегафон конкурируют, МТС стоит дороже всех.

По рассмотренным направлениям для бизнесменов цены у МТС и Мегафон конкурируют, данных по Билайн недостаточно.

Роуминг

Многие операторы предоставляют услуги роуминга, когда есть возможность выходить с SIM-картой своего оператора в сеть другого оператора. Существует междугородний и международный роуминг. Междугородний роуминг может быть нужен, если абонент едет в поезде. У такого абонента может быстро менять положение на карте, поэтому он не может приобретать для каждого пункта, через который едет, местную SIM-карту у местного оператора.

Международный роуминг обычно более дорогой, чем междугородний.

Для международного роуминга МТС предлагает услугу «Ноль без границ». Абонентская плата за эту услугу составляет 60 ? в день. Для некоторых направлений входящие вызовы первые 10 минут могут быть бесплатны, но после израсходования лимита в 200 минут на месяц, каждая входящая минута будет стоить по 25 ? в минуту.

Для Греции, Германии и Турции выгоднее будет использовать услугу «Свободное путешествие». Абонентская плата составляет 100 ? в день. Услуга предлагает 60 минут в день для входящих и исходящих на российские номера.

Таблица 9. Цена на «Ноль без границ» по туристическим направлениям

Кипр Греция Италия Турция Испания

Входящие звонки (первые 10 минут), рублей в минуту 0 0 0 0 0

Входящие звонки (с 11 минуты), рублей в минуту 25 25 25 25 25

Исходящие звонки на российские номера(1 минута и начиная с 6 минуты), рублей в минуту 50 65 65 60 60

Исходящие звонки на российские номера (со 2 по 5 минуту), рублей в минуту 25 25 25 25 25

Исходящие звонки на номера страны пребывания, рублей в минуту 50 75 75 60 60

Исходящие звонки на номера остальных стран, рублей в минуту 135 135 135 135 135

Скорее всего, мигрантам не составит труда обзавестись местными тарифами, поэтому данное направление отдельно по странам СНГ рассматриваться не будет.

Для бизнесменов важно быть всегда на связи, на одном номере, поэтому они вряд ли согласятся менять SIM-карту на местную.

Рисунок 13. Цена на «Ноль без границ» по бизнес направлению

США Япония Германия Великобритания Китай

Входящие звонки (первые 10 минут), рублей в минуту 0 0 0 0 0

Входящие звонки (с 11 минуты), рублей в минуту 25 25 25 25 25

Исходящие звонки на российские номера(1 минута и начиная с 6 минуты), рублей в минуту 200 99 85 85 115

Исходящие звонки на российские номера (со 2 по 5 минуту), рублей в минуту 25 25 25 25 25

Исходящие звонки на номера страны пребывания, рублей в минуту 200 99 85 85 115

Исходящие звонки на номера остальных стран, рублей в минуту 200 155 135 135 135

Для международного роуминга Билайн предоставляет услугу «Моя планета». Стоимость подключения услуги 25 ?. По всем туристическим направлениям входящие звонки стоят 15 ? в минуту, исходящие в любые страны и внутри страны пребывания 25 ? в минуту. Такие же цены для ближайшего зарубежья и указанных ранее направлений для бизнеса, за исключением Японии, для которой входящие 19 ? в минуту, а исходящие 49 в минуту.

Для международного роуминга Мегафон предоставляет две опции: «Весь мир» и «Вокруг света». «Весь мир» предлагает 30 минут в день бесплатных входящих вызовов при абонентской плате 39 ? в стуки. «Вокруг света» подключается за 15 ? и имеет ежедневную абонентскую плату в 9 ?. Входящие и исходящие вызовы по Европе и СНГ, Турции, Абхазии и Южной Осетии стоят 6 ? за минуту, для Японии 9 ? за минуту, для США и Китая 36 ? за минуту. Для звонков в Россию Мегафон использует Callback.Международный роуминг в отличие от других тарифов может иметь платный входящий вызов, цены могут достигать 200 ? за минуту.

Обзор рынка VOIP связи

Помимо операторов сотовой связи существуют операторы, предоставляющие услуги Voice over IP (VOIP) телефонии. Основным отличием данной связи является использование сети интернет для соединения абонентов. Некоторые фирмы предлагают различные VOIP услуги, часто связь двух или более абонентов одной VOIP компании через интернет являются бесплатными. Такие услуги предоставляются продуктами Skype, Hangouts, Viber.

VOIP может связывать не только через сеть интернет, но и через сотовую сеть. Для этого используются GSM-VOIP шлюзы. Для VOIP-сервера можно настроить Least Cost Routing - автоматический выбор маршрута для звонка в зависимости от номера. Сервер сам выбирает наивыгодный тариф для выхода в сеть, в связи с чем, стоимость на связь падает.

Цены на VOIP могут зависеть от курса валюты или указываться в другой валюте, для сравнения все цены будут переведены в рубли по курсу на 26.05.2015 указанные на сайте Центрального банка Российской [25].Курс на данную дату: Таблица 10. Курс валют на 26.05.2015

1 € 1 $

54,7477 ? 49,8613 ?

Skype Skype предлагает следующие тарифы для звонков на российские номера сотовых телефонов [26]:

Таблица 11. Цены Skype на звонки в России

Минут Долларов в месяц Рублей в месяц

60 2,79 139,113

120 4,49 223,8772

400 17,99 897,0048

800 34,99 1744,647

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Кипра: Таблица 12. Цены Skype на звонки в Кипр

МИНУТДОЛЛАРОВ в МЕСЯЦРУБЛЕЙ в месяц

60 2,79 139,113

120 5,49 273,7385

400 13,99 697,5596

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов Турции: Таблица 13. Цены Skype на звонки в Турцию

МИНУТДОЛЛАРОВ в МЕСЯЦРУБЛЕЙ в месяц

60 6,49 323,5998

120 12,49 622,7676

400 39,99 1993,953

800 74,99 3739,099

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов и стационарных телефонов в США:

Таблица 14. Цены skype на звонки в США

Минут Долларов в месяц Рублей в месяц

60 1,09 54,34882

120 2,09 104,2101

400 4,99 248,8079 безлимит 6,99 348,5305

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов в Японию: Таблица 15. Цены skype на звонки в Японию

Минут Долларов в месяц Рублей в месяц

60 4,99 248,8079

120 9,99 498,1144

Skype предлагает следующие тарифы для звонков на номера сотовых телефонов и стационарных телефонов в Китай: Таблица 16. Цены skype на звонки в Китай

МИНУТДОЛЛАРОВ в МЕСЯЦРУБЛЕЙ в месяц

120 1,19 59,33495

400 3,89 193,9605

800 7,79 388,4195 безлимит 13,99 697,5596

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

Viber

Viber Out предлагает следующие расценки:

Таблица 17. Расценки на Viber Out

Страна Рубли в минуту

Россия 3,96

Кипр 3

Турция 8,96

Италия 3,96

Испания 3,96

Греция 2,95

США 0,95

Япония 4,91

Китай 0,65

Германия 2,95

VOIP сервер можно поставить на обычном компьютере, поэтому VOIP решения часто используются внутри фирм для связи с клиентами или для внутрисетевом общение. Данную связь может контролировать системный администратор. Он может сам настроить защищенность связи и запись разговоров. Для сервера можно настроить DISA, чтобы звонящие клиенты могли в режиме DTMF вводить команды, которые примет виртуальная АТС. Также для такого сервера можно настроить шлюз, который позволит звонить и принимать сотовый сигнал.Использование VOIP может сократить расходы на связь, особенно там, где есть бесплатный и стабильный интернет. С VOIP можно не заботиться о роуминге. Тарифы на VOIP не такие сложные, как у сотовых операторов.

Обзор функции телефонии callback

На практике, интернет связь имеет ограниченную зону покрытия, а сама услуга по предоставлению интернета стоит денег. При этом цены на VOIP остаются привлекательными.

Если связь по сети интернет есть, но она нестабильная, то на помощь приходит услуга Callback. На сервер VOIP отправляется номер, куда абонент желает позвонить, а сервер уже перезванивает абоненту по каналу сотовой связи, после этого начинает дозваниваться до другого абонента и соединяет этих двух абонентов. В случае если нет возможности использовать интернет, можно отправить SMS на номер VOIP сервера с номером абонента «B», которому звонит абонент «A». Существуют также SIM-карты, в которые вшиты нужные параметры для Callback телефонии. Эти операторы экономят денежные средства, используя VOIP, поэтому их тарифы дешевле.

Такие услуги предоставляет МТС [27]. К номеру абонента добавляется код *137*, а в конец #. После отправки запроса идет входящий звонок, если на него ответить, то начнется соединение с отправленным в запросе абонентом. Стоимость обратного звонка зависит от страны пребывания абонента.

Мегафон также предоставляет такие услуги: обратный вызов может произойти при обычном наборе номера, если подключена услуга «Вокруг Света» [28].

Существует еще один способ передать серверу номер абонента «B» от абонента «A» - с помощью DTMF сигнала. Данный способ хорош тем, что любой современный телефон умеет генерировать DTMF сигналы, а входящий вызов у многих операторов является бесплатным.

Так как любой телефон с операционной системой Android умеет генерировать DTMF сигналы, то этот способ является самым универсальным, он требует минимального подключения дополнительных услуг и не требует наличия SIM-карты. Именно такой способ могут использовать владельцы собственных VOIP серверов для связи абонентов.

Анализ программ, функционал которых может быть использован для облегчения использования функции Callback

Прямую реализацию приложений для DTMF Callback без привязки к оператору сложно найти.

Существуют реализации функций, которые могут быть полезны при использование DTMF Callback.

Одной из таких реализаций чаще всего называют префиксер. Эти программы отлавливают входящий или исходящий вызов и прибавляют к нему так называемый prefix или suffix, то есть дополняют номер телефона до номера или после, получается такой вид номера: prefix xxxxxxxxx suffix , где x - любой символ номера.

Задачей этих программ в реализации Callback будет добавлять DTMF сигнал после определенного события.

Prefixer

Наиболее приближенный к решению данной задачи является Prefixer от компании 253°Below [29]. Данная программа содержит правила, в которых можно настроить: a. Suffix b. Prefix c. Расписание работы программы d. Номер, который запишется в журнал вызовов e. Номера, на которых будет работать правило

Как следует из интерфейса программы, правила можно настроить как для входящих, так и для исходящих звонков. То есть программа должна добавлять номер, когда пришел входящий вызов. В теории, если послать в suffix “,” для паузы или “;” для ожидания гудка, то можно послать в DISA номер.

Рисунок 14. Скриншот prefixer’а Для исходящих звонков программа действительно добавляет prefix и suffix, но вот для входящих, вопреки настроенным правилам, она ничего не добавляет. То есть ее на практике невозможно использовать для DTMF Callback связи, но зато можно использовать для реализации Callback от МТС.

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

Gamekeyboard

Для тестирования такой возможности была использованная Gamekeyboard от компании Locnet [30]. Для использования программы нужны root права. Данная программа содержит макросы, в которые можно записать какие символы будут вводиться с каким промежутком. Можно настроить размер и положение на экране виртуальной кнопки, которая будет активировать макрос. С телефона создавать макрос для этой программы достаточно тяжело, поэтому область ее применения ограничивается небольшим количеством любимых номеров. Данная программа поддерживает профили, поэтому теоретически можно разработать приложение, которое создаст макрос для набранного номера и свяжет с кнопкой. Данное решение позволит абоненту не хранить в памяти номер абонента и не набирать весь номер целиком. Однако дополнительные действия от пользователя все равно требуются.

Root права - права на доступ ко всем функциям UNIX систем. Так как Android является UNIX-подобной операционной системой, в ней тоже предусмотрены root права, однако производители телефонов часто ограничивают доступ к ним. Производитель может программное усложнить получение root прав, сделать запрет на перепрошивку. Производитель может сам дать инструмент для получения root прав, но при отказе от гарантий пользователем, который получил root права. Несмотря на это, бывает, что единственный способ реализовать какой-то функционал - это иметь доступ root.Большинство решений для DTMF Callback завязано на использование конкретного оператора. При наличии программных средств, упрощающих использование DTMF Callback, нет комплексного решения, которое нацелено конкретно на решение данной задачи. Владельцам собственных серверов по предоставлению VOIP связи выгодно пользоваться DTMF способом.

Технологическая часть

Анализ средств разработки под Android

Основным языком для написания пользовательских приложений под Android является Java [31]. Интерфейс программирования (API) для работы с функциями Android подразумевает использование Java. Для создания приложений, написанных на Java под Android, используются Build Tools из Android Software Sevelopment Kit (SDK). Существует способ написания приложений на C/C для обеспечения более высокой скорости работы приложений [32]. Для этого используется Native Development Kit. Существует решение для разработки под C# под названием Xamarin [33], которое позволяет создавать кроссплатформенные приложения. Для разработки на Python под Android можно использовать одно из нескольких решений [34] указанных в таблице: Таблица 18. Сравнение реализаций python под Android

Project Native Python GUI libraries APK generation Custom build

Python for Android Да Да Да Да PGS4A Да Да Да Нет

Android scripting Нет Нет Нет Нет

Python on a chip Нет Нет Нет Нет

Фреймворк kivy позволяет создавать кроссплатформенные приложения. Его можно связать с python for Android. Тогда становится возможным написание кроссплатформенных приложений, которые будут запускаться на Android. Также существует способ использовать обертку для вызова Java классов из Android API под названием PYJNIUS [35].

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

Средства для разработки под Android - SDK Tools

Основной инструментарий для разработки под Android входит в пакет инструментов - SDK Tools. В этот пакет входят инструменты для работы с виртуальными устройствами. Android Virtual Device Manager (AVD) предназначены для работы и настройки эмуляторов. Для того чтобы создать эмулятор используется образ системы. Такие образы можно скачать в графическом или консольном интерфейсе программы Android SDK Manager. В интерфейсе Android SDK Manager для одной версии Android можно выбрать несколько образов, которые будут эмулировать разные устройства.

Рисунок 15. Скриншот графического интерфейса Android SDK Manager

Одним из важных инструментов является Android Debug Bridge (adb), программа, предназначенная для отладки устройств на Android. Adb запускается из командной строки и управляется через консольный интерфейс. Adb работает с разными подключенными устройствами к компьютеру: · Устройства, подключенные по USB

· Устройства, подключенные по Wifi

· Эмулируемые устройства

Adb позволяет: · устанавливать или удалять приложения с устройства

· работать с командной оболочкой устройства

· работать с packet manager

· запускать Intent

· работать с LOGCAT

В SDK входит большой набор инструментов, которые так или иначе интегрированы в среды разработки, например Build Tools входят в Eclipse или Android Studio.

Среда интегрированной разработки Android Studio

На данный момент, официальной средой интегрированной разработки (IDE) для Android является Android Studio [36]. Данная IDE базируется на INTELLIJ IDEA от JETBRAINS и включает в себя ряд функций: · Скрипты Gradle для сборки apk

· Сборка вариантов и генерация множества apk

· Шаблоны кода

· Редактор слоев (layouts)

· подпись приложений

· Встроенная поддержка Google Cloud Platform и возможность интеграции Google Cloud Messaging and App Engine

Android Studio позволяет параллельно устанавливать собранные приложения на несколько устройств подключенных по adb.

Android Studio поддерживает работу с системами контроля версий.

Редактор исходного кода в Android Studio обладает рядом функций, которые упрощают разработку: · автозавершение слов

· подсказка об ошибках в коде

· подсветка синтаксиса java и xml файлов

· автоматический импорт из библиотеки Android, если используется класс из нее

· выделение серым цветом переменных, которые не были использованы

· комментирование строк кода

· прыжки по разным файлам проекта в поисках выделенного слова

Android Studio является мощным инструментом, который рекомендуется использовать при разработке под Android, поэтому было принято решение использовать ее в разработке. телефония callback android тестирование

Обзор языка программирования Python

Python является языком высокого уровня, который сочетает в себе несколько парадигм программирования, такие как: · Объектное ориентированное программирование. В python все является объектами: строки, классы, числа и т.д. Если, допустим, взять число «1» и сложить с ним число «2»: «1 2», то на самом деле будет вызван метод __add__ у объекта 1, который получит тип Integer, поэтому следующая запись даст такой же результат: (1).__add__(2)

· Динамическая типизация. Тип задается автоматически во время выполнения программы [37]. Плюсом данного вида типизации является легкость написания программ и быстрое освоение программистом данного метода. В python можно самому указать тип. С помощью функции «type» можно узнать тип объекта. С помощью функции «int» и «float» можно изменить тип. Так можно число 1 представить строкой со значением 1 или числом с плавающей запятой. Пример: >>> a = 1

>>> b = str(1)

>>> c = float(1)

>>> a 1

>>> b

"1"

>>> c

1.0

Если проверить тип переменных, то у «a» будет «int», у «b» будет «str», а у «c» будет «float»

>>> print type(a)

>>> print type(b)

>>> print type(c)

· Строгая типизация. Python принято относить к строго типизированным объектным языкам.

· Функциональное программирование. В python можно использовать рекурсии, ленивые вычисления и функции высших порядков

· Императивное программирование. Python поддерживает процедурный метод программирования, в python можно использовать модули.

Python считается достаточно простым языком, он является самым популярным языком для изучения в колледжах США [38].

Код на python выполняется построчно, поэтому часто ошибку в коде можно заметить только после выполнения этой строчки. Программы, созданные с помощью python for android, запускаются достаточно долго.

Для запуска такого приложения, техническим средством должно быть устройство связи со следующими характеристиками: · На устройстве во внутренней памяти должно быть 10мб свободной памяти для установки приложения и хранения его данных.

· Устройство должно иметь следующее ПО: a. Android 2.2 и выше b. OPENGL ES 2.0

Требования к внутренней памяти обусловлены тем, что установленное приложение будет в себе содержать python for android и kivy. Для работы python for android необходим OPENGL ES 2.0, который есть в Android, начиная с версии 2.2.

Обзор языка программирования Java

Java является объектно-ориентированным языком программирования. С помощью компилятора исходный код на Java превращается в байт код, который содержит в себе набор инструкция для Java машины. Такой подход дает независимость от платформы. В случае разработки под Android Java машиной является Dalvik. Использование такой машины может сильно снижать производительность.

Концепция Java в плане объектной ориентации схожа с python: «В Java есть специальный суперкласс Object и все классы являются его подклассами. Поэтому ссылочная переменная класса Object может ссылаться на объект любого другого класса» [39].

Java имеет гибкую систему разграничения доступа, которая задается модификаторами класса private, public, protected или отсутствием модификатора: Таблица 19. Модификаторы и доступ в Java private protected public тот же класс да да да да подкласс в том же пакете нет да да да независимый класс в том же пакете нет да да да подкласс в другом пакете нет нет да да независимый класс в другом пакете нет нет нет да

Разработка интерфейса для упрощенного использования функции телефонии Callback

Наиболее простым интерфейсом для пользователя является стандартный интерфейс его системы. Алгоритм звонка при использовании функции Callback не должен отличаться от обычного алгоритма инициализации звонка.

Интерфейс такой программы должен помогать реализовать следующие функции: 1. Callback o Запуск приложения при инициализации звонка из контактной книги(Contacts) o Инициализация звонка на сервер телефонии o Прием звонка от сервера телефонии o Определение того, что установлен канал связи o Анализ DTMF сигналов от сервера o Передача DTMF сигнала во время звонка

2. Работа с историей o Возможность удалять информацию из системного журнала истории вызовов o Возможность добавлять информацию в системный журнал истории вызовов

3. Настройки o Включить/выключить профиль o Возможность выбрать профиль o Возможность настроить профиль o Возможность добавить профиль o Возможность удалить профиль

4. Профили o Возможность изменять номер сервера o Возможность задать белый список номеров сервера o Возможность указать время ожидания обратного звонка от сервера o Возможность указать интервал между отправляемым сигналом DTMF

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

После настройки приложения пользователь может вызвать абонента из контактной книги. В это время появится меню выбора приложения, с помощью которого можно звонить. Если пользователь выберет DTMF Callback, то номер контакта будет сохранен приложением, а само приложение инициализирует вызов с сервером. Когда сервер разорвет связь и перезвонит, приложение ответит на звонок и наберет в тональном наборе сохраненный номер, после этого пользователю нужно будет дождаться соединения с вызываемым абонентом.

После окончания разговора в журнале вызовов должен остаться номер абонента, которому звонил пользователь. Подсчет времени разговора должен начинаться с момента дозвона.

Разработка прототипа, который демонстрирует возможности по упрощению использования функции Callback

Исходя их реальных возможностей и нулевого опыта разработки под Android, были разработаны минимальные требования к прототипу: 1. Прототип должен запускаться на всех современных устройствах под Android начиная от Android 2.1 и заканчивая Android 5.1

2. Прототип должен упросить набор номера абонента, когда перезвонит сервер телефонии

3. При звонке на номер абонента через прототип звонок должен инициироваться на номер сервера телефонии и одновременно запоминать номер, куда звонил абонент

Инициализация вызова на указанный номер

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

Было принято решение писать на языке программирования python, так как у меня имеется опыт написания на этом языке [40]. Для реализации понадобилось подключить Java класс android.intent.action.CALL из API Android. Целью данного приложения является тестирование возможности вызова любого абонента приложением. Данная функция нужна, чтобы после вызова абонентом «A» на номер абонента «B» начался звонок на номер сервера телефонии. После реализации этой функции стало ясно, что, несмотря на мой опыт, написание приложений под python всплывает множество неочевидных проблем, а в результате готовое приложение слишком долго загружается, что достаточно критично для телефонии. Также стало очевидно, что понимать API без знания языка программирования Java будет очень тяжело. Так как все равно требовалось понимание языка программирования Java, а итоговый результат на Java давал преимущества, было принято решение переписать функцию под Java, используя Android Studio. Вот код итоговой функции под Java: public void Call(View view) {

MNUMBERTEXTVIEW.SETTEXT("Вызов на " tel.GETTEXT() " Инициализрован");

String TODIAL = "tel:" tel.GETTEXT().TOSTRING();

STARTACTIVITY(new Intent(Intent.ACTION_CALL, Uri.parse(TODIAL)));

}

}

Прием номера из контактной книги

Для того чтобы android-приложение было вызвано из другого приложения можно использовать явные и неявные Намерения(Intent). В явном Намерении указывается, какой класс оно должно вызвать: Intent intent_about = new Intent(MAINACTIVITY.this, ABOUTACTIVITY.class);

STARTACTIVITY(intent_about);

Активность ABOUTACTIVITY.class прописана в Android.Manifest.xml, поэтому система знает какую активность надо запустить.

В неявном Намерении вместо класса, который надо запустить указывается действие, на которое должна среагировать система. В стандартной контактной книге(Contacts) в android, при вызове из нее происходит действие ACTION_CALL_PRIVELEGED. В это действие передается номер «tel:». Например, мы можем с помощью adb позвонить этим действием, написав: adb -e shell am start -a android.intent.action.CALL_PRIVILEGED -d tel:911

,где 100 - это номер, куда позвонит телефон. Если прописать команду adb shell am start -a android.intent.action.CALL -d tel:911

При этом звонка не будет, так как не будет привилегий позвонить на такой номер. В зависимости от надобности, разные приложения могут использовать различные действия. Если экстренных вызовов не предполагается, то будет использоваться именно ACTION_CALL. Это более частый случай для вызовов из браузера или приложения с контактным номером.

На некоторых прошивках в качестве контактной книги может использоваться альтернативное приложение. Сам исходный код данного приложения может быть закрытым. Если в таких приложениях звонок инициируется как-то иначе, то угадать, через какой Intent инициируется звонок, может быть тяжело. В таком случае можно поставить альтернативную контактную книгу из Google Play или других доверенных источников.

Чтобы программа перехватила неявное Намерение надо в ANDROIDMANIFEST.xml добавить intent-filter:

Так как из контактной книги нужно взять только номер в scheme указывается «tel».

Теперь операционная система Android будет предлагать каждый раз вызвать приложение, когда будет вызываться Намерение ACTION_CALL или ACTION_CALL_PRIVILEGED.

Чтобы приложение могло использовать номер, который был в «tel» надо в нужном нам классе воспользоваться методом GETDATA(): Плавающее окошко с кнопкой

Существует библиотека под названием STANDOUT с помощью, которой можно создать плавающее окно [41]. Библиотека имеем открытый исходный код и примеры [42]. Данная библиотека распространяется под свободной лицензией MIT [43]. Данная лицензия позволяет свободно распространять программное обеспечение, которое содержит эту библиотек. Библиотека поставляется как есть, ответственность за вред, который она может нанести, авторы не несут.

Особенности данной библиотеки: · Предоставление своего собственного VIEW. Легкая интеграция.

· Декораторы плавающих окон: 1. заголовок плавающего окна

2. кнопка, которая сворачивает плавающее окно

3. кнопка, которая закрывает плавающее окно

4. кнопка для изменения размеров окна

· Свернутое окно можно восстановить

· Создание окон разных типов

· Окна можно перемещать

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

Для того чтобы создать окно надо написать класс, который будет расширением класса STANDOUTWINDOW: public class FLOATINGBUTTON extends STANDOUTWINDOW {

}

Далее следует внутрь этого класса добавить метод создания окна: @Override public void CREATEANDATTACHVIEW(int id, FRAMELAYOUT frame) {

LAYOUTINFLATER inflater = (LAYOUTINFLATER)GETSYSTEMSERVICE(LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.floating_button, frame, true);

А в res/layouts слой с описанием интерфейса этого окна floating_button.xml.

Кнопка для плавающего окна

Для плавающего окна в STANDOUT можно создавать кнопки, также как это делается и для обычных Активити. Следующий код следует добавить, чтобы все пространство Активити заполняла кнопка: <Button android:layout_width="match_parent" android:layout_height="match_parent" android:text="Набрать номер" android:id="@ id/button4"/>

В классе FLOATINGBUTTON.java можно написать обработчик для нажатия на кнопку: Button button = (Button) view.FINDVIEWBYID(R.id.button4);

button.SETONCLICKLISTENER(new View.ONCLICKLISTENER() {

@Override public void ONCLICK(View v) {

String rescommand = "input text "" tel """;

try {

Runtime.GETRUNTIME().exec(new String[]{"su", "-c", rescommand});

} catch (IOEXCEPTION e) { e.PRINTSTACKTRACE();

}

}

});

Данный обработчик будет отрабатываться при нажатии кнопки под id button4.

Строка rescommand содержит в себе команду, которая будет выполнена с правами root из консоли. Команда input text вводит в любое окно указанный текст, будто бы он был набран с клавиатуры. В данном случае текст этот - телефон, который будет получен из телефонной книги.

Иконка приложения

Для того чтобы абонент мог понять направленность приложения помимо названия принято создавать иконку. Для создания иконки были привлечены выпускница МИЭМ НИУ ВШЭ по направлению дизайн Мария Григорьевна Флейтман и выпускник НИУ ВШЭ по направлению вэб-дизайн Решетько Андрей Владимирович.

В ходе составления задания для дизайнеров было выдвинуто два предположения: 1. так как DTMF Callback в первую очередь является приложением для телефонии, то вполне логично использовать в иконке трубку, символизирующую звонок. Поэтому была идея поместить трубку в середину, а вокруг нее поместить волны в виде кругов.

2. слово Callback состоит из двух слов call(звонок) и back(назад). Первые буквы этих слов будут символизировать слово CALLBACK. Волны вокруг DTMF сигнал.

В результате были получены следующие иконки:

Рисунок 16. Иконка с трубкой 1

Рисунок 17. Иконка с трубкой 2

Рисунок 18. Иконка с трубкой 3

Рисунок 19. Иконка CB 1

Рисунок 20. Иконка CB 2

Иконка с трубкой 1 и Иконка CB 1 сделаны в стиле старых приложений, где используется градиент. Из середины цвет плавно перетекает к краям. Остальные иконки сделаны в более современном плоском дизайне, где каждое кольцо залито своим одним цветом. По моему мнению, получаются толстые полоски, которые плохо отражают волны. В то время, на градиенте кольца расходятся, как рябь по воде, что ассоциируется с волной.

Трубка создает стойкую ассоциацию, что приложение создано для звонков, в то время, как буквы CB не создают такого впечатления. Было принято решение использовать Иконку с трубкой 1.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?