2010-08-20 2 views

ответ

7

OK! Я нашел это онлайн, так что это определенно кажется возможным. Похоже, вы можете вызвать mediaRecorder.getMaxAmplitude().

код из приложения под названием 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; 
} 

Вот source

+0

Я получаю ошибку 'mRecorder.prepare();' и когда я добавляю блок catch try, ошибка исчезает, но возникает ошибка времени выполнения. С нетерпением жду хорошего ответа. – stack

+0

Как я могу постоянно слушать событие в этом случае, я хочу, чтобы функция get Amplitude срабатывала всякий раз, когда есть шум/звук. – Sparsh

Смежные вопросы