2010-08-25 9 views
8

Quiero desarrollar una pequeña aplicación de Android para medir el nivel de ruido actual (probablemente en dB). Pero no tengo idea de qué buscar en las libs. No quiero grabar el ruido. ¿Alguien puede darme un puntero a qué clases mirar?Nivel de ruido de consulta en Android

Respuesta

4

recomiendo mirar en estas clases:

android.media.AudioFormat 
android.media.AudioManager 
android.media.AudioTrack 

que usamos en el Blinkendroid audio package hace poco tiempo.

+0

He echado un vistazo a esas, me parece que tendría que grabar un archivo, procesar inmediatamente ese archivo para obtener el nivel de ruido, repito, lo cual sería extremadamente ineficiente. No hay acceso directo al micrófono allí ... – fredley

+0

Quizás estas tres clases en el repositorio puedan ayudarlo allí: http://code.google.com/p/blinkendroid/source/browse/trunk/blinkendroid/src/org/cbase/blinkendroid/audio /? r = 96 Hemos grabado, procesado y visualizado audio en este proyecto, pero lo dejamos caer otra vez. – keyboardsurfer

+0

Tenía la esperanza de hacerlo sin grabar, pero lo comprobaré. – Sebi

0

El siguiente fragmento de código muestra cómo obtuvimos el nivel de ruido en el pasado. Lamentablemente, la documentación no indica qué unidad devuelve #getMaxAmplitude().

// Start recording but don't store data 
MediaRecorder mediaRecorder = new MediaRecorder(); 
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mediaRecorder.setOutputFile("/dev/null"); 
mediaRecorder.prepare(); 
mediaRecorder.start(); 

// Obtain maximum amplitude since last call of getMaxAmplitude() 
while(someCondition) { 
    int amplitude = mediaRecorder.getMaxAmplitude(); 
} 

// Don't forget to release 
mediaRecorder.reset(); 
mediaRecorder.release(); 
Cuestiones relacionadas