Ho un'app che legge il microfono. In particolare, sto rilevando il soffio nel microfono;) Non funziona su molti dispositivi HTC. Ho preso un HTC Droid Eris e un HTC Droid Incredible. In aggiunta a quelli che ho segnalato da molti amici che hanno dispositivi HTC anche questo problema include il relativamente nuovo HTC Thunderbolt.Disabilita cancellazione rumore HTC
Quindi, il debug dell'applicazione ha dimostrato che il rumore ambientale della stanza si registra da 4000-11000 in uno Starbucks. Non appena soffio nel microfono, il volume di input scende ai 4000: ogni volta, sempre.
Qualcuno sa se questo può essere disabilitato a livello di programmazione?
Ecco come sto leggendo l'ingresso ...
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;
}
}
Non ho avuto la possibilità di provare ciò che suggerisci. Ti assegnerò una parte della taglia in quanto la tua soluzione sembra ragionevole, ma richiederebbe refactoring e testing potenzialmente significativi. –
Richiede sicuramente un po 'di ginnastica sul codice per ottenere una solida soluzione audio che funzioni su tutti i dispositivi. Conosco il dolore –