2010-06-30 24 views
11

Sto scrivendo un'app che deve essere eseguita durante una chiamata. Dopo che l'utente ha effettuato una chiamata e avvia la mia app, desidero che la mia app sia in grado di sapere se la chiamata è stata interrotta da una connessione errata. È possibile? GrazieCome può la mia app Android rilevare una chiamata interrotta?

risposta

2

La classe Android TelephonyManager fornisce il metodo getCallState(), che indica lo stato della chiamata corrente. Stai cercando una transizione da CALL_STATE_OFFHOOK a CALL_STATE_IDLE.

Sfortunatamente, non vedo alcun metodo per registrare una richiamata, quindi potrebbe essere necessario ricorrere al polling.

http://developer.android.com/reference/android/telephony/TelephonyManager.html

+2

In che modo la transizione di stato per un normale hang-up deve essere diversa da offhook -> idle? – Sam

+0

Ah, vedo cosa stai chiedendo ora. Sfortunatamente, da quello che vedo, non penso che ci sia un modo per distinguere tra una chiamata interrotta, l'interruzione dell'utente o il blocco remoto. –

+0

come sapere che la persona che sta chiamando ha cancellato la chiamata da solo? ne abbiamo alcun flusso? –

5

Non CALL_STATE_OFFHOOK -> CALL_STATE_IDLE indicano anche una chiamata normalmente terminata?

Indipendentemente da ciò, è possibile controllare semplicemente lo stato della chiamata utilizzando il metodo di callback onCallStateChanged della classe PhoneStateListener. Questo verrà chiamato ogni volta che lo stato cambia ed è possibile cambiare lo stato fornito per trovare in quale stato si trova.

Problemi correlati