2010-08-25 27 views
8

Je veux développer une petite application Android pour mesurer le niveau de bruit actuel (probablement en dB). Mais je n'ai aucune idée de ce qu'il faut chercher dans les bibliothèques. Je ne veux pas enregistrer le bruit. Quelqu'un peut-il me donner un pointeur quelles classes regarder?Niveau de bruit de requête dans Android

Répondre

4

Je recommande à la recherche dans ces classes:

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

Nous les avons utilisés dans le Blinkendroid audio package il y a peu de temps.

+0

J'ai regardé à travers ceux-ci, il me semble que vous auriez à enregistrer un fichier, immédiatement traiter ce fichier pour obtenir le niveau de bruit, répéter, ce qui serait extrêmement inefficace. Il n'y a pas d'accès direct au microphone ... – fredley

+0

Peut-être que ces trois classes dans le référentiel peuvent vous aider: http://code.google.com/p/blinkendroid/source/browse/trunk/blinkendroid/src/org/cbase/blinkendroid/audio /? r = 96 Nous avons enregistré, traité et visualisé l'audio dans ce projet, mais nous l'avons laissé tomber à nouveau. – keyboardsurfer

+0

J'espérais le faire sans enregistrer, mais je vais vérifier. – Sebi

0

L'extrait de code suivant montre comment nous avons obtenu le niveau de bruit dans le passé. Malheureusement, la documentation ne dit pas quelle unité renvoie #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();