Главная » Разработка для Android » Телефонные звонки

0

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

Вместо немедленного дозвона примените действие Intent.ACTION_ DIAL, чтобы отобразить экран для набора номера. Оно загружает Активность для дозвона и передает ей указанный номер, позволяя стандартному  при- ложению самому управлять инициализацией вызова (системное телефонное приложение предлагает решать пользователю, делать вызов или нет). Этот подход не требует никаких  полномочий и считается  стандартным  путем осуществления звонков из сторонних приложений.

В листинге  12.1 демонстрируется базовая  методика  для набора теле- фонного номера.

Листинг 12.1. Набор номера

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:1234567"));

startActivity(intent);

Используя Намерение для того, чтобы объявить необходимость набрать номер, ваше приложение может оставаться  независимым от реализации программы, которая занимается непосредственно дозвоном. Например, если вы на своем устройстве  заменили  стандартное  приложение на гибридное, совместимое  с IP-телефонией, вышеописанный подход позволит  другим приложениям получить доступ к новым возможностям.

Замена стандартного приложения для дозвона

Замена  стандартного  приложения для дозвона проходит в два этапа:

1) перехват Намерений, которые в настоящее время обслуживаются стан- дартным приложением;

2) осуществление исходящих звонков и при необходимости управление ими.

Пытаясь отобразить номер телефона или посылая запрос на звонок с по- мощью схемы tel:, стандартная телефонная программа реагирует на действия Намерений, которые вызываются при нажатии  пользователем аппаратной кнопки дозвона.

Чтобы  перехватывать подобные запросы,  добавьте в описание  своей новой Активности тег <intent-filter>, который отслеживает следующие действия.

Intent.ACTION_CALL_BUTTON. Передается  в момент, когда на- жимается аппаратная кнопка для звонка. Создайте Фильтр намерений, изначально  отслеживающий данное действие.

Intent.ACTION_DIAL. Это действие  описывалось в предыдущем разделе. Оно используется приложениями, которые хотят запустить программу для дозвона. Фильтр намерений, работающий с данным дей- свием, должен иметь сразу две категории: DEFAULT и BROWSABLE (чтобы поддерживать запросы на дозвон из браузера), а также содер- жать схему tel:, чтобы разрешить замену существующих телефонных функций (могут использоваться и дополнительные схемы).

Intent.ACTION_VIEW. Используется приложениями для отображе- ния какого-либо набора данных. Не забудьте указать в Фильтре намере- ний схему tel:, чтобы задействовать новую Активность для отображения телефонных номеров.

В следующем манифесте описывается Активность с Фильтрами намерений, которые перехватывают вышеописанные действия:

<activity android:name=".MyDialerActivity" android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.CALL_BUTTON" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<action android:name="android.intent.action.DIAL" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="tel" />

</intent-filter>

</activity>

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

Наиболее  простой  подход — использование существующих  телефон- ных возможностей. В этом случае вы можете применить  действие Intent. ACTION_CALL, запустив стандартную Активность для дозвона и позволив системе управлять набором номера, устанавливать связь и передавать  го- лосовые данные. Ваше приложение должно содержать полномочие CALL_ PHONE, чтобы инициировать это действие.

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

Вы можете перехватывать вышеописанные Намерения для внесения из- менений в исходящие телефонные звонки или для их блокировки, необяза- тельно реализовывать полноценный аналог приложения для дозвона.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии