2012-06-16 12 views
6

Estoy trabajando en una aplicación de grabadora de voz. Quiero saber si hay alguna forma de encontrar la fuerza del audio mientras lo grabas. No quiero guardar la grabación en ningún lado. Solo quiero mostrarle al usuario si el sonido que capta el micrófono es más fuerte que un umbral predefinido o no.¿Cómo verificar la intensidad (intensidad) del audio durante la grabación?

Digamos que si el sonido está atrapado en menos de 2 decibelios, debe mostrar "bajo" en un lienzo rojo. Tan pronto como el sonido se hace más fuerte y supera el umbral de 2 decibelios, el lienzo debe ponerse verde y mostrar el mensaje "alto".

¿Es posible usar MediaRecorder o tengo que usar la clase AudioRecorder? Y cómo resolverlo.

Gracias de antemano

+0

Hye ... ¿por qué downvote .. Esta fue la pregunta totalmente apropiada que cumple con todas las normas de SO .. ?? – Pargat

Respuesta

9

Puede iniciar otro hilo cuando las operaciones de inicio y utilizar la función de capturar getMaxAmplitude amplitudes.

A continuación se muestra la snippet.here que están tomando muestra por cada 250 milisegundos y se calcula la amplitud máxima

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()); 
       } 

      } 
     } 
Cuestiones relacionadas