2013-08-07 19 views
9

Robię aplikację wezwanie z połączenia szereg Wyślij DTMF i sygnał po tym przezUkryj tonu DTMF podczas wybierania numeru

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

Obecnie można go wybrać 1234567, czekać około 3 sekund, a następnie linią 890. Funkcjonalne porządku ale wysyła 890 z tonem, który nie jest zbyt dopasowujący, Czy istnieje sposób na wysłanie 890 bez odpowiedzi tonowej?

Odpowiedz

1

Deweloperzy nie mogą tego zrobić za pomocą publicznych interfejsów API. Niestety, Android nie radzi sobie z kontrolą DTMF. Na przykład istnieje two year old feature request, aby umożliwić użytkownikowi wysyłanie sterowania DTMF w dowolnym czasie podczas połączenia; zostało porzucone.

Jak wiecie, używając ACTION_CALL lub ACTION_DIAL i robi <number>|,;|<tones> będzie wysyłać sygnały DTMF bezpośrednio po nawiązaniu połączenia, ale to gdzie kontrola użytkownika nad numerze zatrzyma.

Dowolne dodatkowe elementy sterujące, takie jak wysyłanie dodatkowych dźwięków lub wyciszanie odpowiedzi tonowej na słuchawkę, są obsługiwane przez wewnętrzne interfejsy API, z widocznymi numerami com.android.internal.telephony. Na uwagę zasługuje metoda stopDtmf(), która może zrobić to, czego szukasz, z wyjątkiem tego, że jest wewnętrzna i może nie mieć stałego zachowania.

Here's what the 2.x source looked like for the method. Jak stwierdzono, nie ma gwarancji, że to zadziała, a korzystanie z wewnętrznych interfejsów API jest zdecydowanie odradzane.

+0

Widziałem aplikacje ukrywające sygnały DTMF. – Deepak

+0

Przykład? Nie widziałem takiego, który nie wymagałby korzenia. –

+0

Problem jest znacznie starszy niż dwa lata; zbliża się piąta rocznica, a [te poprawki] (https://groups.google.com/d/msg/android-contrib/4QqHgLOrBO8/h2DZ5IKXVVsJ) zostały złożone i porzucone 18 miesięcy temu. Mam małe nadzieje, że wszystko zmieni się na krótką metę i pamiętam, że nawet jeśli tak, to nie będzie kompatybilny z poprzednimi wersjami Androida. –