2012-12-19 22 views
5

Nella mia applicazione ho avviato una chiamata in uscita e sto usando PhoneStateListener per sapere sullo stato della chiamata.Stato risposta chiamata uscente in Android 2.2+

Ogni volta che si inizia a chiamare lo stato del telefono è TelephonyManager.CALL_STATE_OFFHOOK. Quando il destinatario della chiamata ha risposto alla chiamata, non ricevo alcun cambiamento nello stato del telefono.

Ho provato molti ma non sono riuscito a ottenere questo stato di risposta. Qualcuno ha detto di usare l'HFP del bluetooth (Hands Free Profile) per ottenere lo stato di risposta alle chiamate. Ma non ho ricevuto alcuna informazione su HFP dal sito web degli sviluppatori Android.

Se qualcuno ha affrontato lo stesso problema e ha ottenuto la soluzione, si prega di dare i vostri preziosi suggerimenti.

risposta

0

Anch'io ho avuto lo stesso problema. Questa potrebbe non essere la risposta alla tua domanda. Sto solo condividendo quello che ho fatto.

Ho avuto un'attività che apre il contatto e può effettuare una chiamata. Quello che volevo è sapere se la chiamata ha avuto successo (il destinatario ha risposto alla chiamata).

Non c'era una soluzione che ho trovato in quel momento con PhoneStateListener.

Così come un aggiramento, quello che ho fatto è controllato i registri delle chiamate se ha una chiamata in uscita ai numeri di telefono di quel contatto dopo aver avviato l'attività di contatto.

Vedere se il suo aiuto.

+0

Ho sentito questo, ma quando dobbiamo controllare i registri delle chiamate? C'è qualche listener di modifiche al registro delle chiamate o qualcosa del genere? –

+0

controlla questo se può aiutarti http://stackoverflow.com/questions/4422410/how-to-implement-a-contentobserver-for-call-logs –

+0

Questo non funzionerà. Il registro delle chiamate registra ancora una durata a partire dal momento della composizione del telefono. Non è possibile distinguere tra il tempo di selezione e lo stato di risposta. Al momento non esiste una soluzione per determinare se una chiamata ha ricevuto una risposta. – AndroidDev

0

si desidera qualcosa di specifico per il bluetooth? In caso contrario, posso fornire fonti

1

Il CALL_STATE_OFFHOOK non cambia quando si risponde alla chiamata da parte del Destinatario: stato di chiamata

dispositivo: Ricevitore sganciato. Esiste almeno una chiamata che sta componendo, attivo o in attesa e nessuna chiamata sta squillando o sta aspettando.

Lo stato non dovrebbe cambiare fintanto che il telefono è in chiamata, sia che risponda o no.

Questa domanda era stato chiesto molte voci, e finora nessuno dei quelli che ho trovato sono stati risolti: Detect if an outgoing call has been answered, Android : How to get a state that the outgoing call has been answered?, Android : How to get a state that the outgoing call has been answered? (ce ne sono molti altri). Le soluzioni fornite in questo caso si basano sullo stato CALL_STATE_OFFHOOK da modificare al momento della risposta alla chiamata, il che non avviene.

Sembra che non ci siano API pubbliche che possono essere utilizzate per ottenere lo stato della chiamata in uscita. La soluzione migliore che vedo è ciò che suggeriva Vivek Khandelwal. Non è così lungo da codificare né ha pesanti costi di prestazioni. A meno che non aggiunga troppe autorizzazioni (ora è necessario aggiungere READ_CALL_LOGS) è un problema, usalo.

Problemi correlati