Tengo una aplicación que lee el micrófono. Específicamente, estoy detectando que sopla en el micrófono;) No funciona en muchos dispositivos HTC. Recogí un HTC Droid Eris y un HTC Droid Incredible. Además de esos, tengo informes de muchos amigos que tienen dispositivos HTC que también experimentan este problema para incluir el relativamente nuevo HTC Thunderbolt.Inhabilitar cancelación de ruido HTC
Por lo tanto, la depuración de la aplicación ha demostrado que el ruido ambiental de la sala registra de 4000 a 11000 en un Starbucks. Tan pronto como soplo en el micrófono, el volumen de entrada desciende a los 4000: todo el tiempo, todo el tiempo.
¿Alguien sabe si esto se puede desactivar mediante programación?
Así es como estoy leyendo la entrada ...
int minBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);
short[] buffer = new short[minBufferSize];
audioRecord.startRecording();
audioRecord.read(buffer, 0, minBufferSize);
int i = 0;
for (short sample : buffer) {
inputVolume = Math.abs(sample);
maxVolumeIn = (inputVolume > maxVolumeIn) ? inputVolume : maxVolumeIn;
if (inputVolume >= micSensitivity) {
Log.d(TAG, "Blowing Detected. Volume Level: " + inputVolume);
break;
}
}
No he tenido la oportunidad de probar lo que sugiere. Voy a otorgarle una parte de la recompensa ya que su solución parece razonable, pero requeriría refactorizaciones y pruebas potencialmente significativas. –
Definitivamente requiere un poco de gimnasia de código para obtener una solución de audio sólida que funcione en todos los dispositivos. Sé el dolor. –