Service call phone android

Содержание
  1. Android — Phone Calls
  2. Intent Object — Action to make Phone Call
  3. Intent Object — Data/Type to make Phone Call
  4. Example
  5. Как совершать звонки и использовать SMS в Android приложениях
  6. 1. Как совершить звонок
  7. Создание нового проекта в Android Studio
  8. Макет экрана
  9. Измените класс MainActivity
  10. 2. Отслеживание событий телефонного звонка
  11. Добавим разрешение
  12. Создайте объект PhoneStateListener
  13. Состояние прослушивания телефонного звонка
  14. Как использовать эмулятор, звонить и отправлять SMS сообщения
  15. 3. Отслеживание событий телефонного звонка в фоновом режиме
  16. Создание BroadcastReceiver
  17. Изменим AndroidManifest.xml
  18. Отслеживание исходящих звонков
  19. 4. Отправка SMS-сообщений
  20. Настройка макета
  21. Изменение MainActivity
  22. Запуск приложения
  23. 5. Отправка SMS сообщения напрямую
  24. Добавляем разрешения в AndroidManifest.xml
  25. Изменяем класс MainActivity
  26. 6. Получение SMS сообщения
  27. Добавим разрешение
  28. Создание получателя вещания
  29. Заключение
  30. Датчики Android: Близость и Гироскоп
  31. 6 ДА и НЕТ, для достижения отличного пользовательского опыта с Android
  32. Фоновый звук в Android с MediaSessionCompat
  33. Изменение Android приложения под Материальный Дизайн

Android — Phone Calls

Android provides Built-in applications for phone calls, in some occasions we may need to make a phone call through our application. This could easily be done by using implicit Intent with appropriate actions. Also, we can use PhoneStateListener and TelephonyManager classes, in order to monitor the changes in some telephony states on the device.

This chapter lists down all the simple steps to create an application which can be used to make a Phone Call. You can use Android Intent to make phone call by calling built-in Phone Call functionality of the Android. Following section explains different parts of our Intent object required to make a call.

Intent Object — Action to make Phone Call

You will use ACTION_CALL action to trigger built-in phone call functionality available in Android device. Following is simple syntax to create an intent with ACTION_CALL action

You can use ACTION_DIAL action instead of ACTION_CALL, in that case you will have option to modify hardcoded phone number before making a call instead of making a direct call.

Intent Object — Data/Type to make Phone Call

To make a phone call at a given number 91-000-000-0000, you need to specify tel: as URI using setData() method as follows −

The interesting point is that, to make a phone call, you do not need to specify any extra data or data type.

Example

Following example shows you in practical how to use Android Intent to make phone call to the given mobile number.

To experiment with this example, you will need actual Mobile device equipped with latest Android OS, otherwise you will have to struggle with emulator which may not work.

Step Description
1 You will use Android studio IDE to create an Android application and name it as My Application under a package com.example.saira_000.myapplication.
2 Modify src/MainActivity.java file and add required code to take care of making a call.
3 Modify layout XML file res/layout/activity_main.xml add any GUI component if required. I’m adding a simple button to Call 91-000-000-0000 number
4 No need to define default string constants.Android studio takes care of default constants.
5 Modify AndroidManifest.xml as shown below
6 Run the application to launch Android emulator and verify the result of the changes done in the application.
Читайте также:  Как снять установку для андроида

Following is the content of the modified main activity file src/MainActivity.java.

Following will be the content of res/layout/activity_main.xml file −

Following will be the content of res/values/strings.xml to define two new constants −

Following is the default content of AndroidManifest.xml

Let’s try to run your My Application application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio, open one of your project’s activity files and click Run icon from the toolbar.Select your mobile device as an option and then check your mobile device which will display following screen −

Now use Call button to make phone call as shown below −

Источник

Как совершать звонки и использовать SMS в Android приложениях

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Из этого урока вы узнаете об Android Telephony и SMS API. Вы узнаете, как сделать звонок из вашего приложения и как отслеживать события телефонного звонок, а также как отправлять и получать SMS сообщения.

1. Как совершить звонок

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

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

Запустите Android Studio и создайте новый проект с пустым активити под названием MainActivity .

Макет экрана

На данный момент, наш макет будет иметь только поля EditText и кнопку Вызова:

Измените класс MainActivity

В блоке кода ниже, создадим ACTION_DIAL , для отображения номеронабирателя. Номер телефона передается из tel от URI схемы: tel:XXXXXXXX . Обратите внимание, что вам не нужны разрешения для этой работы:

Если вы запустите приложение и нажмёте кнопку набора (dial), вы увидите номеронабиратель и там вы должны набрать номер. Вы можете изменить это, чтобы на самом деле совершить звонок из вашего приложения, просто заменив назначение ACTION_DIAL на ACTION_CALL . Однако, это потребует разрешение android.permission.CALL_PHONE .

2. Отслеживание событий телефонного звонка

В этом разделе мы собираемся узнать, как отслеживать события телефонного звонка в системе Android. Телефон может находиться в трех состояниях:

  1. простоя (когда он не используется)
  2. звонка (когда есть входящий звонок)
  3. снято (когда отвечаете на звонок)

Добавим разрешение

Нам нужно разрешение READ_PHONE_STATE , чтобы иметь возможность отслеживать состояние телефона. Добавим его в AndroidManifest.xml:

Создайте объект PhoneStateListener

Мы создаем объект класса PhoneStateListener и затем переопределим его метод onCallStateChanged() (в IntelliJ, это легко сделать это с помощью Control-O, а затем выберите или поищите метод). Мы будем обрабатывать изменения состояния звонка, отображая Toast . Обратите внимание, что мы также можем получить доступ к номеру телефона входящего звонка, когда срабатывает этот метод:

Читайте также:  Как отключить рекламу вконтакте андроид 2021

В зависимости от потребностей вашего приложения, можно также переопределить один из этих методов событий: onCellInfoChanged() , onCallForwardingIndicatorChanged() , onCellLocationChanged() или onSignalStrengthChanged() .

Состояние прослушивания телефонного звонка

Чтобы начать прослушивание телефонного звонка, нам нужно получить TelephonyManager от системной службы и инициализировать его в onCreate() .

В методе onResume() мы можем начать слушать с помощью метода listen() TelephonyManager , передавая ему экземпляр PhoneStateListener и статическую LISTEN_CALL_STATE . Мы останавливаем прослушивание методом onStop() , передавая LISTEN_NONE в качестве второго аргумента для listen() .

Другие возможные варианты прослушивания телефона LISTEN_CELL_LOCATION , LISTEN_SIGNAL_STRENGTH , LISTEN_CALL_FORWARDING_INDICATOR и LISTEN_CELL_INFO .

Итак, запустите приложение и убедитесь, что приходит входящий звонок.

Отслеживание будет работать только, когда приложение активно. Чтобы заставить работать его в фоновом режиме (когда наше приложение не запущено), нам нужно будет создать BroadcastReceiver , так что даже если приложение не запущено, мы все еще можем отслеживать состояние телефонного звонка. В зависимости от требований приложения, это может быть лучшим способом получать изменения состояния звонка. Я покажу вам, как сделать это в следующем разделе.

Имейте в виду, что мы отслеживаем только входящие звонки. Для отслеживания исходящих звонков, нам потребуются дополнительные разрешения. Чтобы отслеживать исходящие звонки, добавьте следующую строку в ваш файл AndroidManifest.xml.

Как использовать эмулятор, звонить и отправлять SMS сообщения

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

3. Отслеживание событий телефонного звонка в фоновом режиме

Создание BroadcastReceiver

Так же, как и в предыдущем разделе, нам нужно создать прослушиватель событий для отслеживания изменений состояний телефона. Основным отличием в том, что на этот раз мы будем расширять базовый класс BroadcastReceiver , чтобы мы могли получить состояние прослушивания телефонного звонка, даже если приложение не запущено. Убедитесь, что зарегистрировали слушателя не более одного раза! Наша проверка для этого находится в строке 36.

Изменим AndroidManifest.xml

BroadcastReceiver работает, только если он зарегистрирован. Нам нужно рассказать системе Android о нашем BroadcastReceiver, зарегистрировав его в файле AndroidManifest.xml, подключив наш класс PhoneCallStateReceiver к описывающий системе вещания, что, в данном случае, мы хотим получить — PHONE_STATE .

Отслеживание исходящих звонков

Для исходящих звонков, вам нужно включить действие NEW_OUTGOING_CALL в в приемник в AndroidManifest.xml.

Чтобы получить номер телефона исходящего звонка, в методе onReceive(Context, Intent) , мы получаем номер как экстра. Для предотвращения вызова, мы можем вызвать setResultData() и передать ему аргумент null. ResultData используется в качестве фактического номера для вызова.

Вы можете узнать больше о трансляции и broadcast receivers в нашем учебнике здесь на Envato Tuts+:

4. Отправка SMS-сообщений

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

Читайте также:  Морская свинка для андроида

Настройка макета

Во-первых нам нужно изменить наш основной макет, чтобы там были: поле EditText для сообщения и кнопка Отправить Сообщение.

Изменение MainActivity

Внутри метода onCreate() в классе MainActivity , задайте ACTION_SENDTO как первый аргумент и smsto:

в качестве второго аргумента. Текстовое сообщение будет значением экстра sms_body :

Тут. SMS клиент будет отслеживать статус доставки сообдения.

Запуск приложения

Когда заполнены все необходимые поля, нажатие на кнопку Отправка SMS, откроет SMS клиента или даст пользователю выбрать приложение, если оно уже не выбрано.

5. Отправка SMS сообщения напрямую

Далее, давайте посмотрим, как отправить SMS напрямую из нашего приложения, вместо использования SMS клиента.

Добавляем разрешения в AndroidManifest.xml

Как обычно, нам нужно зарегистрировать разрешение в AndroidManifest.xml.

Изменяем класс MainActivity

Далее, для Android 6.0 (API уровня 23) и выше, нужно запросить разрешение SEND_SMS во время выполнения.

Чтобы у знать больше об выполнении Android разрешений и как они изменились к версии 6.0, посмотрите наш урок на Envato Tuts+:

Для отправки SMS, мы получаем экземпляр SMSManager по умолчанию, а затем вызвать его метод sendTextMessage() , передавая туда телефонный номер в качестве первого аргумента, и сообщение в качестве второго аргумента:

Для отслеживания статуса доставки, метод sendTextMessage() SMSManager имеет два варианта параметров PendingIntent : sentIntent и deliveryIntent .

Если вы хотите использовать sentIntent , смотрите результат кода Activity.RESULT_OK на успешное выполнение, или один из RESULT_ERROR_GENERIC_FAILURE , RESULT_ERROR_RADIO_OFF и RESULT_ERROR_NULL_PDU для указания ошибки.

6. Получение SMS сообщения

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

Добавим разрешение

Добавим разрешение RECEIVE_SMS в AndroidManifest.xml:

Далее нам нужно проверить и посмотреть, имеет ли приложение разрешение на получение SMS-сообщений во время выполнения. Поэтому в классе MainActivity , сделаем проверку на разрешение RECEIVE_SMS . Если его нет, его нужно запросить.

Создание получателя вещания

Мы извлекаем каждый объект из класса SmsMessage , используя метод createFromPdu(byte[] pdu) , передавая его PDU (блок данных протокола). Затем мы добавляем это в массив наших сообщений.

Для поддержки API 23 и выше, вы должны включить формат дополнительной строки (либо «3gpp» для GSM/UMTS/LTE сообщений в формате 3GPP или «3gpp2» для CDMA/LTE сообщений в формат 3GPP2).

Теперь запустите приложение, закройте его и отправьте SMS с эмулятора телефона.

Заключение

В этом уроке вы узнали о том, как:

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

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

В то же время, проверьте другие наши записи по разработке на Android!

Датчики Android: Близость и Гироскоп

6 ДА и НЕТ, для достижения отличного пользовательского опыта с Android

Фоновый звук в Android с MediaSessionCompat

Изменение Android приложения под Материальный Дизайн

Источник

Оцените статью