2013-08-07 25 views
9

Sto facendo un'applicazione chiamata con un numero di chiamata e inviare toni DTMF dopo cheNascondi durante la composizione

String number = "tel:+1234567,890#"; 
Intent c1 = new Intent(android.content.Intent.ACTION_CALL, Uri.parse(number)); 

Attualmente sia possibile comporre 1234567, attendere circa 3 secondi, quindi comporre 890. funzionale ok ma invia 890 con un tono che non è molto conforme, c'è un modo per inviare 890 senza risposta di tono?

risposta

1

Non c'è modo per gli sviluppatori di farlo tramite API pubbliche. Sfortunatamente, Android non gestisce il controllo DTMF molto bene. Ad esempio, c'è un two year old feature request per consentire a un utente di inviare controlli DTMF in un momento arbitrario durante una chiamata; è stato abbandonato.

Come sapete, utilizzando ACTION_CALL o ACTION_DIAL e facendo <number>|,;|<tones> invierà toni DTMF direttamente dopo una chiamata è collegata, ma è lì che il controllo dell'utente sulla questione si ferma.

Eventuali controlli aggiuntivi, come l'invio di toni aggiuntivi o il silenziamento della risposta del tono al telefono, sono gestiti da API interne, notevole com.android.internal.telephony. Di nota è il metodo stopDtmf(), che potrebbe fare ciò che stai cercando, tranne che è interno e potrebbe non avere un comportamento coerente.

Here's what the 2.x source looked like for the method. Come affermato, non è garantito che ciò funzioni e l'utilizzo di API interne è fortemente scoraggiato.

+0

Ho visto le applicazioni nascondere i toni DTMF. – Deepak

+0

Esempio? Non ne ho visto uno che non richiedesse la root. –

+0

Il problema è molto più vecchio di due anni; si sta avvicinando al suo quinto anniversario e [queste patch] (https://groups.google.com/d/msg/android-contrib/4QqHgLOrBO8/h2DZ5IKXVVsJ) sono state inviate e abbandonate 18 mesi fa. Ho poche speranze che qualcosa cambi nel breve periodo e tengo presente che anche se lo fanno, non sarà compatibile con le versioni precedenti di Android. –