Раньше toroid android lolipop обнаружил, что исходящий вызов отвечает или нет, проверяя продолжительность звонка, если вызов не ответил, значит, длительность вызова остается 0 сек. Но в android Lolipop длительность звонка запускается до ответа на вызов. Есть ли способ обнаружить, что исходящий вызов отвечает или нет в android lolipop?Как определить, ответил ли исходящий звонок или нет в ororid Lolipop?
1
A
ответ
0
Вы можете переопределить прослушиватель onCallStateChanged с помощью Telephony Manager.
@Override
public void onCallStateChanged(int state, String number) {
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
// call established.
break;
}
0
У меня есть рабочее решение для обнаружения ответа на исходящий звонок! Решение немного взломано, но оно работает, по крайней мере, в Samsung S6 с Android 6.0.1. Я также тестировал Nexus 5x с Android 7.1.1, но это не сработало.
Способ, которым я пользуюсь, заключается в использовании Audio Manager для изменения аудиомода в MODE_IN_COMMUNICATION, когда я получаю состояние исходящего вызова в EXTRA_STATE_OFFHOOK. После изменения аудиомода на MODE_IN_COMMUNICATION, я запускаю поток, который контролирует аудиомод, пока система не вернет его обратно в MODE_IN_CALL, когда на вызов будет дан ответ.
Вот фрагмент кода:
final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (outgoingCallAnswerWatchThread != null){
outgoingCallAnswerWatchThread.interrupt();
outgoingCallAnswerWatchThread = null;
}
outgoingCallAnswerWatchThread = new Thread(new Runnable() {
@Override
public void run() {
// by changing the audio mode to MODE_IN_COMMUNICATION
// we can then detect when the call is answered
// because android changes the audio mode back to MODE_IN_CALL
// when that happens
audioManager.setMode(MODE_IN_COMMUNICATION);
while(callState == RINGING && !Thread.interrupted()){
try {
Thread.sleep(CALL_WATCHER_SLEEP_TIME_MS);
} catch (InterruptedException e) {
Log.d(TAG, "Thread interrupted!");
break;
}
int audioMode = audioManager.getMode();
Log.d(TAG, "audioMode:" + audioMode);
if (audioMode == MODE_IN_CALL){
//the call is connected
Log.i(TAG, "OUTGOING CALL answered!");
}
}
}
});
outgoingCallAnswerWatchThread.start();
Смежные вопросы
- 1. звонок исходящий с Twilio
- 2. Twilio Исходящий звонок ID
- 3. Возможно ли записать входящий или исходящий звонок в iPhone?
- 4. Как закончить мой исходящий звонок.
- 5. SipDemo Исходящий звонок
- 6. Как определить входящий и исходящий входящий звонок Iphone?
- 7. Как проверить, ответил ли ping или нет в пакетном файле
- 8. Как повесить исходящий звонок в Android?
- 9. Ответ на исходящий звонок в PhoneStateListener
- 10. Тройной исходящий звонок на конференцию
- 11. Android, как определить, отвечает ли исходящий вызов
- 12. Как определить, был ли переадресован исходящий вызов?
- 13. android.provider.CallLog.Calls.TYPE исходящий вызов не ответил, а исходящий вызов отклонен?
- 14. Ответил Извещение Исходящий вызов от App - Twilio
- 15. Как завершить исходящий звонок после результата операции?
- 16. Как сделать исходящий звонок из моего приложения?
- 17. Как распознать состояние телефона получил ли исходящий вызов или нет
- 18. Как получить исходящий звонок отвечает на Android
- 19. Как обнаружить исходящий телефонный звонок получен в android
- 20. Как определить, существует ли кадр или нет
- 21. Как определить, нажата ли кнопка или нет
- 22. Как определить, подключен ли сокет или нет?
- 23. Unity3d unet - TargetRPC звонок, исходящий от клиента
- 24. Twilio исходящий звонок с проверкой вызова
- 25. Сделать исходящий звонок со встроенным модемом в C#
- 26. Как пересылать исходящий вызов?
- 27. Как я могу обнаружить исходящий звонок, подключен android
- 28. Как предотвратить исходящий звонок в Android с услугой?
- 29. Исходящий звонок FreeSwitch. Обнаружение автоответчика (факс)
- 30. Asterisk думает, что исходящий звонок факсимильным аппаратом
CALL_STATE_OFFHOOK будет получить срабатывает, как только мы нажимаем на кнопку вызова, но мне нужно, чтобы найти, был ли дан ответ другим пользователем или нет этот вызов. В ниже уровня API 19 мы можем найти, используя длительность вызова, но выше API 19, продолжительность вызова начинается, когда мы нажимаем кнопку CALL. – Kamalanathan
Наконец-то вышло решение по вышеуказанной проблеме https://code.google.com/p/android/issues/detail?id=79592. В android 5.1 длительность вызова работает нормально для исходящих вызовов. – Kamalanathan