Ответ 1
Я не думаю, что там такой API, а также нет API для отправки DTMF по той же причине, что вы не можете сказать, когда этот вызов подключен.
Как только ACTION_NEW_OUTGOING_CALL
был передан, мне нужно записать следующее событие другого ответчика. Не могли бы вы посоветовать, как этого добиться? Я знаю, что это возможно, так как приложение для дозвона android меняет зеленый значок андроида на фото пользователя, когда он подбирает. Спасибо!
ОБНОВЛЕНО: я взглянул на источник приложения на Android, обрабатывающий исходящие звонки. Я заметил следующий метод в ContactsUtils
:
/**
* Kick off an intent to initiate a call.
*/
public static void initiateCall(Context context, CharSequence
phoneNumber) {
Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
Uri.fromParts("tel", phoneNumber.toString(), null));
context.startActivity(intent); }
Я предполагаю, что мой ответ в том, что вы слушаете Intent.ACTION_CALL_PRIVILEGED
. Поэтому, чтобы передать мой вопрос: Кто-нибудь знает, какая деятельность обрабатывает Intent.ACTION_CALL_PRIVILEGED
? Спасибо вам за расширенный
Я не думаю, что там такой API, а также нет API для отправки DTMF по той же причине, что вы не можете сказать, когда этот вызов подключен.
Не обязательно, чтобы это можно было фиксировать как внешнее приложение. Зеленый значок андроида является частью приложения, которое управляет вызовом, поэтому для изменения значка не требуется широковещательная передача.
Что касается диспетчера телефонии android, вы не можете программно определить, был ли ответ получен или нет. Это означает, что у вас нет возможности узнать, когда пользователь выбрал телефон на другом конце. Android имеет 3 состояния диспетчера телефонии, и ни один из них не способен определить, был ли вызов фактически answerd или нет (В СЛУЧАЕ ВЫХОДНЫХ ЗВОНКОВ)
Единственный способ, которым вы можете это сделать, - это разбор журналов Logcat, для этого не доступно событие PhoneStateListener.
Некоторые запрашивают его здесь: https://code.google.com/p/android/issues/detail?id=14266
В любом случае, в версиях выше Android 4.2, поскольку Logcat "песочница", это может быть невозможно...