2010-08-25 12 views
8

Desidero sviluppare una piccola app Android per misurare il livello di rumore corrente (probabilmente in dB). Ma non ho idea di cosa cercare nelle librerie. Non voglio registrare il rumore. Qualcuno può darmi un puntatore su quali classi guardare?Livello di rumore delle query in Android

risposta

4

vi consiglio di guardare in queste classi:

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

Li abbiamo utilizzati nel Blinkendroid audio package a poco tempo fa.

+0

Ho dato un'occhiata a questi, mi sembra che dovresti registrare un file, elaborare immediatamente quel file per ottenere il livello di rumore, ripetere, che sarebbe estremamente inefficiente. Non c'è accesso diretto al microfono ... – fredley

+0

Forse queste tre classi nel repository potrebbero aiutarti lì: http://code.google.com/p/blinkendroid/source/browse/trunk/blinkendroid/src/org/cbase/blinkendroid/audio /? r = 96 Abbiamo registrato, elaborato e visualizzato l'audio in questo progetto, ma l'ho rilasciato di nuovo. – keyboardsurfer

+0

Speravo di farlo senza registrare, ma controllerò. – Sebi

0

Il seguente frammento di codice mostra come abbiamo ottenuto il livello di rumore nel passato. Sfortunatamente la documentazione non dice quale unità #getMaxAmplitude() restituisce.

// 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(); 
Problemi correlati