Autore Topic: DTMF....???  (Letto 1869 volte)

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
DTMF....???
« il: 19 Agosto 2011, 16:41:08 CEST »
0
Salve ragazzi,
vorrei sapere se qualcuno ha avuto esperienza con il DMTF e se quindi ha qualche  riferimento da poter studiare per android.
Vi ringrzio. A presto
« Ultima modifica: 20 Agosto 2011, 09:01:23 CEST da mailojah »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:DMTF....???
« Risposta #1 il: 19 Agosto 2011, 18:46:25 CEST »
0
Cosa intendi per DMTF? (intendevi DTMF?)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DMTF....???
« Risposta #2 il: 20 Agosto 2011, 09:01:03 CEST »
0
Si scusami....intendevo DTMF ovvero Dual-tone multi-frequency

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #3 il: 20 Agosto 2011, 10:07:00 CEST »
0
In particolare a me servirebbe imparare la parte di decodifica...

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:DTMF....???
« Risposta #4 il: 21 Agosto 2011, 00:44:40 CEST »
0
Per la decodificata del DTMF puoi utilizzare l'algoritmo di Goertzel:

http://it.wikipedia.org/wiki/Algoritmo_di_Goertzel
adb logcat | tee /tmp/logcat | grep TAG

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #5 il: 22 Agosto 2011, 09:45:39 CEST »
0
Grazie iceweasel, io dovrei prelevare da una chiamata il codice dtmf, mi chiedevo se android predispone nel suo sdk algoritmi che risolvono questi problemi. Grazie, fammi sapere ciaoo

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:DTMF....???
« Risposta #6 il: 22 Agosto 2011, 12:03:53 CEST »
0
Non mi risulta nel API di Android un DTMF decoder al massimo un encoder nella classe "ToneGenerator".

Se cerchi comunque esistono delle implementazioni open sorce di DTMF decoder per Android, come questo:

http://code.google.com/p/dtmf-decoder
adb logcat | tee /tmp/logcat | grep TAG

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #7 il: 22 Agosto 2011, 15:20:12 CEST »
0
Si infatti proprio oggi ci stavo dando un'occhiata...mi chiedevo come si fa a testare un app del genere, cioè come faccio a simulare i segnali d'ingresso (o meglio a ricevere la chiamata)???
Grazie

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #8 il: 22 Agosto 2011, 15:40:13 CEST »
0
Cmq per capirci meglio....
a me non interessa utilizzare il cellulare come microfono per prelevare i segnali...io dovrei ricevere una chiamata da un'altro cellulare dove trovo il codice dtmf. Ad esempio se il numero che  mi sta chiamando è 3456545678, oltre a questo numero dovrei trovarne concatenati altri (codice dtmf), diciamo in "allegato". Non so se sono stato chiaro. Forse è più semplice del decodificatore vocale...
Grazie

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:DTMF....???
« Risposta #9 il: 22 Agosto 2011, 22:05:31 CEST »
0
Devi studiarti per bene la classe "MediaRecorder" del API di Android, la parte che riguarda la scelta del sorgente audio, non c'è solo il microfono:

MediaRecorder.AudioSource | Android Developers

Il programma segnalato prima "dtmf-decoder" nel suo codice controlla se c'è una conversazione in corso e se attiva registra dalla conversazione altrimenti attiva il microfono:

Codice: [Seleziona]
...
public int getAudioSource()
        {
                TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
               
                if (telephonyManager.getCallState() != TelephonyManager.PHONE_TYPE_NONE)
                        return MediaRecorder.AudioSource.VOICE_DOWNLINK;
               
                return MediaRecorder.AudioSource.MIC;
        }
...

L'applicativo deve avere naturalmente il permesso di registrare (RECORD_AUDIO).
adb logcat | tee /tmp/logcat | grep TAG

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #10 il: 23 Agosto 2011, 09:03:20 CEST »
0
Grazie iceweasel,
quindi lo scenario dovrebbe essere questo: (te lo chiedo perchè senò è inutile che andiamo avanti)

1)L'utente 1 chiama l'utente 2
2)L'utente 2 riceve la chiamata e avvia l'applicazione
3)L'applicativo dell'utente due controlla e registra dalla conversazione o dal microfono e decodifica.

Se è così a me basterebbe che l'utente 2 quando riceve la chiamata da un determinato numero deve avviare l'applicazione automaticamente e registrare..!!Giusto?

Grazie e a presto;)

p.s.
non capisco a cosa può servire la tastiera se può solo decodificare...

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:DTMF....???
« Risposta #11 il: 23 Agosto 2011, 10:28:30 CEST »
0
Non l'ho mai usato ma con un opportuno "BroadcastReceiver" puoi ricevere le informazioni sullo stato della chiamata tra cui anche il numero:

TelephonyManager | Android Developers

naturalmente devi avere il permesso di leggere lo stato del telefono (READ_PHONE_STATE).

Il bottoni nel programma "dtmf-decoder" non sono attivi per l'input ma vengono usati per l'output, viene attivato il tasto con l'ultimo numero rilevato. Il programma utilizza una FFT per rilevare le frequenze del DTMF, l'utilizzo dell'algoritmo di Goertzel è molto meno dispendioso in termini di CPU.
adb logcat | tee /tmp/logcat | grep TAG

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:DTMF....???
« Risposta #12 il: 23 Agosto 2011, 10:42:00 CEST »
0
Ok grazie molto chiaro!