2010-08-20 8 views

risposta

7

OK! L'ho trovato online, quindi sembra assolutamente possibile. Sembra che tu possa chiamare mediaRecorder.getMaxAmplitude().

codice da un app chiamato NoiseAlert

public void start() { 
    if (mRecorder == null) { 
     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mRecorder.setOutputFile("/dev/null"); 
     mRecorder.prepare(); 
     mRecorder.start(); 
     mEMA = 0.0; 
    } 
} 

public double getAmplitude() { 
    if (mRecorder != null) 
     return (mRecorder.getMaxAmplitude()/2700.0); 
    else 
     return 0; 
} 

Ecco il source

+0

sto errore di salire sul 'mRecorder.prepare();' e quando aggiungo try catch block ad esso, l'errore si annulla ma si verifica un errore di runtime. Aspettando con ansia una buona risposta. – stack

+0

Come posso ascoltare continuamente l'evento in questo caso, voglio che la funzione di ampiezza venga attivata ogni volta che c'è un rumore/suono. – Sparsh

Problemi correlati