- Android phone api call
- Summary
- Constants
- public static final String AVAILABLE_PHONE_ACCOUNTS
- public static final int STATE_ACTIVE
- public static final int STATE_CONNECTING
- public static final int STATE_DIALING
- public static final int STATE_DISCONNECTED
- public static final int STATE_DISCONNECTING
- public static final int STATE_HOLDING
- public static final int STATE_NEW
- public static final int STATE_RINGING
- public static final int STATE_SELECT_PHONE_ACCOUNT
- Public Methods
- public void answer (int videoState)
- public void conference (Call callToConferenceWith)
- public void disconnect ()
- public List getCannedTextResponses ()
- public List getChildren ()
- public List getConferenceableCalls ()
- public Call.Details getDetails ()
- public Call getParent ()
- public String getRemainingPostDialSequence ()
- public int getState ()
- public InCallService.VideoCall getVideoCall ()
- public void hold ()
- public void mergeConference ()
- public void phoneAccountSelected (PhoneAccountHandle accountHandle, boolean setDefault)
- public void playDtmfTone (char digit)
- public void postDialContinue (boolean proceed)
- Как совершать звонки и использовать SMS в Android приложениях
- 1. Как совершить звонок
- Создание нового проекта в Android Studio
- Макет экрана
- Измените класс MainActivity
- 2. Отслеживание событий телефонного звонка
- Добавим разрешение
- Создайте объект PhoneStateListener
- Состояние прослушивания телефонного звонка
- Как использовать эмулятор, звонить и отправлять SMS сообщения
- 3. Отслеживание событий телефонного звонка в фоновом режиме
- Создание BroadcastReceiver
- Изменим AndroidManifest.xml
- Отслеживание исходящих звонков
- 4. Отправка SMS-сообщений
- Настройка макета
- Изменение MainActivity
- Запуск приложения
- 5. Отправка SMS сообщения напрямую
- Добавляем разрешения в AndroidManifest.xml
- Изменяем класс MainActivity
- 6. Получение SMS сообщения
- Добавим разрешение
- Создание получателя вещания
- Заключение
- Датчики Android: Близость и Гироскоп
- 6 ДА и НЕТ, для достижения отличного пользовательского опыта с Android
- Фоновый звук в Android с MediaSessionCompat
- Изменение Android приложения под Материальный Дизайн
Android phone api call
Represents an ongoing phone call that the in-call app should present to the user.
Summary
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Call.Callback | |||||||||||
Call.Details |
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | AVAILABLE_PHONE_ACCOUNTS | The key to retrieve the optional PhoneAccount s Telecom can bundle with its Call extras. | |||||||||
int | STATE_ACTIVE | The state of a Call when actively supporting conversation. | |||||||||
int | STATE_CONNECTING | The initial state of an outgoing Call . | |||||||||
int | STATE_DIALING | The state of an outgoing Call when dialing the remote number, but not yet connected. | |||||||||
int | STATE_DISCONNECTED | The state of a Call when no further voice or other communication is being transmitted, the remote side has been or will inevitably be informed that the Call is no longer active, and the local data transport has or inevitably will release resources associated with this Call . | |||||||||
int | STATE_DISCONNECTING | The state of a Call when the user has initiated a disconnection of the call, but the call has not yet been disconnected by the underlying ConnectionService . | |||||||||
int | STATE_HOLDING | The state of a Call when in a holding state. | |||||||||
int | STATE_NEW | The state of a Call when newly created. | |||||||||
int | STATE_RINGING | The state of an incoming Call when ringing locally, but not yet connected. | |||||||||
int | STATE_SELECT_PHONE_ACCOUNT | The state of an outgoing Call when waiting on user to select a PhoneAccount through which to place the call. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constantspublic static final String AVAILABLE_PHONE_ACCOUNTSThe key to retrieve the optional PhoneAccount s Telecom can bundle with its Call extras. Used to pass the phone accounts to display on the front end to the user in order to select phone accounts to (for example) place a call. public static final int STATE_ACTIVEThe state of a Call when actively supporting conversation. public static final int STATE_CONNECTINGThe initial state of an outgoing Call . Common transitions are to STATE_DIALING state for a successful call or STATE_DISCONNECTED if it failed. public static final int STATE_DIALINGThe state of an outgoing Call when dialing the remote number, but not yet connected. public static final int STATE_DISCONNECTEDThe state of a Call when no further voice or other communication is being transmitted, the remote side has been or will inevitably be informed that the Call is no longer active, and the local data transport has or inevitably will release resources associated with this Call . public static final int STATE_DISCONNECTINGThe state of a Call when the user has initiated a disconnection of the call, but the call has not yet been disconnected by the underlying ConnectionService . The next state of the call is (potentially) STATE_DISCONNECTED . public static final int STATE_HOLDINGThe state of a Call when in a holding state. public static final int STATE_NEWThe state of a Call when newly created. public static final int STATE_RINGINGThe state of an incoming Call when ringing locally, but not yet connected. public static final int STATE_SELECT_PHONE_ACCOUNTThe state of an outgoing Call when waiting on user to select a PhoneAccount through which to place the call. Public Methodspublic void answer (int videoState)Instructs this STATE_RINGING Call to answer. Parameters
public void conference (Call callToConferenceWith)Instructs this Call to enter a conference. Parameters
public void disconnect ()Instructs this Call to disconnect. public List getCannedTextResponses ()Obtains a list of canned, pre-configured message responses to present to the user as ways of rejecting this Call using via a text message. Returns
See Alsopublic List getChildren ()Obtains the children of this conference Call , if any. Returns
public List getConferenceableCalls ()Returns the list of Call s with which this Call is allowed to conference. Returns
public Call.Details getDetails ()Obtains an object containing call details. Returns
public Call getParent ()Obtains the parent of this Call in a conference, if any. Returns
public String getRemainingPostDialSequence ()Obtains the post-dial sequence remaining to be emitted by this Call , if any. Returns
public int getState ()Obtains the state of this Call . Returns
public InCallService.VideoCall getVideoCall ()Obtains an object that can be used to display video from this Call . Returnspublic void hold ()Instructs this Call to go on hold. public void mergeConference ()Merges the calls within this conference. See CAPABILITY_MERGE_CONFERENCE . public void phoneAccountSelected (PhoneAccountHandle accountHandle, boolean setDefault)Notifies this Call that an account has been selected and to proceed with placing an outgoing call. Optionally sets this account as the default account. public void playDtmfTone (char digit)Instructs this Call to play a dual-tone multi-frequency signaling (DTMF) tone. Any other currently playing DTMF tone in the specified call is immediately stopped. Parameters
public void postDialContinue (boolean proceed)Instructs this Call to continue playing a post-dial DTMF string. A post-dial DTMF string is a string of digits entered after a phone number, when dialed, that are immediately sent as DTMF tones to the recipient as soon as the connection is made. If the DTMF string contains a DTMF_CHARACTER_PAUSE symbol, this Call will temporarily pause playing the tones for a pre-defined period of time. If the DTMF string contains a DTMF_CHARACTER_WAIT symbol, this Call will pause playing the tones and notify callbacks via onPostDialWait(Call, String) . At this point, the in-call app should display to the user an indication of this state and an affordance to continue the postdial sequence. When the user decides to continue the postdial sequence, the in-call app should invoke the postDialContinue(boolean) method. Источник Как совершать звонки и использовать 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. Телефон может находиться в трех состояниях:
Добавим разрешениеНам нужно разрешение READ_PHONE_STATE , чтобы иметь возможность отслеживать состояние телефона. Добавим его в AndroidManifest.xml: Создайте объект PhoneStateListenerМы создаем объект класса PhoneStateListener и затем переопределим его метод onCallStateChanged() (в IntelliJ, это легко сделать это с помощью Control-O, а затем выберите или поищите метод). Мы будем обрабатывать изменения состояния звонка, отображая Toast . Обратите внимание, что мы также можем получить доступ к номеру телефона входящего звонка, когда срабатывает этот метод: В зависимости от потребностей вашего приложения, можно также переопределить один из этих методов событий: 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.xmlBroadcastReceiver работает, только если он зарегистрирован. Нам нужно рассказать системе 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 |