Autore Topic: Generare sequenza toni DTMF  (Letto 899 volte)

Offline divivoma

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s4
  • Sistema operativo:
    ubuntu 13
Generare sequenza toni DTMF
« il: 10 Luglio 2014, 18:45:33 CEST »
0
Salve a tutti,

Sto provando a risolvere il seguente problema che ho postato anche su Stackoverflow e vi riporto per correttezza anche qui:

http://stackoverflow.com/questions/24680846/how-to-generate-multiple-sequence-of-dtmf-tone

Qui posto anche a voi il codice della classe Main completo:

Codice (Java): [Seleziona]
public class MainActivity extends ActionBarActivity
{
       
       
    @Override
    protected void onCreate(Bundle savedInstanceState)  //Metodo che viene richiamanto quando l'app viene creata
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //Andiamo ad inserire come scermata quella definita in /res/layout/activity_main.xml
       
     
        if (savedInstanceState == null)
        {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
       
    }
   

   
    /** Called when the user clicks the Send button */
    public void sendMessage(View view) //must be public, void and has only View as Input
    {
        int zz;
        Intent intent = new Intent(this, FFT_dtmf.class);//Marco: provo a lanciare l'app dell' FFT

        EditText editText = (EditText) findViewById(R.id.edit_message); //estraggo i toni da mandare dalla text view                            
        String message = editText.getText().toString();
       
             
       
        for(zz=0; zz< message.length();zz++)
        {
       
                       
                ToneGenerator tono1= new ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME);
               
                switch(message.charAt(zz))
                {
               
                        case '0':
                        {
                                tono1.startTone(ToneGenerator.TONE_DTMF_0, 2000);                                    
                               
                                break;
                        }
                        case '1':
                        {
                                tono1.startTone(ToneGenerator.TONE_DTMF_1, 2000);
                               
                                break;
                        }
                        case '2':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_2, 3000);
                               
                                break;
                        }
                        case '3':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_3, 4000);
                               
                                break;
                        }
                        case '4':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_4, 5000);
                               
                                break;
                        }
                        case '5':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_5, 6000);
                               
                                break;
                        }
                        case '6':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_6, 7000);
                               
                                break;
                        }
                        case '7':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_7, 500);       
                                break;
                        }
                        case '8':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_8, 500);       
                                break;
                        }
                        case '9':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_9, 500);       
                                break;
                        }
                        case '*':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_S, 500);       
                                break;
                        }
                        case '#':
                        {      
                                tono1.startTone(ToneGenerator.TONE_DTMF_P, 500);       
                                break;
                        }              
                       
                        default:
                        {
                               
                                break;
                        }
               
               
               
                }
               
               
        }
       
       
          startActivity(intent); //Lancio la nuova attività creata prima come Intent
         
    }


Come potete vedere anche dal link, sto cercando di generare una sequenza di toni DTMF continua dove ogni tono dura 1s.
La successione degli eventi è la seguente:

1)L'utente inserisce in un text edit la sequenza di caratteri
2)Quando viene premuto il tasto send, viene chiamato il metodo sendDTMF
3)Purtroppo non vengono rispettate le tempistiche predette, ma i toni vengono lanciati molto velocemente e senza alcun senso.

Se invece eseguo soltanto 1 tono, allora la tempistica viene rispettata correttamente.
Purtroppo sono alle prime armi con Android e mi piacerebbe davvero imparare di più..

Se avete qualche esempio di codice o anche proposte alternative, sono tutte orecchie !!

Grazie.


Marco