yo estaba tratando de obtener el nivel de amplitud de un micrófono en Android de este modo:Android: micrófono de muestra sin grabación para obtener amplitud/nivel en vivo?
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000);
private class RecorderTask extends TimerTask {
private MediaRecorder recorder;
public RecorderTask(MediaRecorder recorder) {
this.recorder = recorder;
}
public void run() {
Log.v("MicInfoService", "amplitude: " + recorder.getMaxAmplitude());
}
}
Por desgracia, esto sólo devuelve 0 todo el tiempo.
Parece que para que esto funcione tengo que empezar a grabar. ¿Es eso correcto?
Si es así, ¿debo grabar durante 500ms, obtener amplitud, detener la grabación y repetir?
Finalmente, ¿tengo que grabar en un archivo? No necesito guardar este archivo de audio, ¿no puedo obtener la amplitud actual o la amplitud más alta desde la última llamada de la entrada actual del micrófono en vivo sin grabar?
Se agradece cualquier ayuda, gracias.
parecer, uno puede usar AudioRecord lugar, no hay necesidad de grabar un archivo – Tom
Puede redirigir la salida de audio/medios a/dev/null y evita que ocurra una grabación real de esa manera. También asegúrese de usar grabador.prepare(), de lo contrario no funcionará. – kpax