2012-06-16 12 views
6

Sto lavorando ad un'applicazione per registratore vocale. Voglio sapere se c'è un modo per trovare la forza dell'audio durante la registrazione. Non voglio salvare la registrazione da nessuna parte. Voglio solo mostrare all'utente se il suono catturato dal microfono è più forte di una soglia predefinita o meno.Come controllare la forza (intensità) dell'audio durante la registrazione?

Diciamo che se il suono viene catturato al di sotto di 2 decibel, dovrebbe mostrare "basso" in una tela rossa. Non appena il suono diventa più forte e supera la soglia di 2 decibel, la tela dovrebbe diventare verde e mostrare il messaggio "alto".

È possibile utilizzare MediaRecorder o è necessario utilizzare la classe AudioRecorder. E come risolverlo.

Grazie in anticipo

+0

Hye ... perché downvote .. Questo era questione totalmente adeguata che risponda a tutti SO norme .. ?? – Pargat

risposta

9

È possibile avviare un altro thread durante la registrazione di inizio e di utilizzare la funzione di catturare getMaxAmplitude ampiezze.

Di seguito lo snippet.here ci stanno prendendo prelievo ogni 250 millisecondi e calcolata l'ampiezza massima

public void run() { 
      int i = 0; 
      while(i == 0) { 

       try { 
        sleep(250); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       if (mRecorder != null) { 
        amplitude = mRecorder.getMaxAmplitude(); 

        //Here you can put condition (low/high) 
        Log.i("AMPLITUDE", new Integer(amplitude).toString()); 
       } 

      } 
     } 
Problemi correlati