Я заметил, что android.media.AudioRecord
не работает при неправильном использовании sampleRateInHz
ВОСПРОИЗВЕДЕНИЕ
Вы также можете легко воспроизвести эту проблему, используя pcmrecorder на Samsung Nexus S (от Google):
https://market.android.com/details?id=com.kohei.android.pcmrecorder
http://ko-yasui.com/home/pcmrecorder/
Таким образом, запись на частоте 48 кГц невозможна, в то время как аппаратный аудиочип поддерживает частоту до 96 кГц:
http://www.wolfsonmicro.com/products/audio_hubs/WM8994/
Является ли это ошибкой устройства/прошивки или известным ограничением?
Обратите внимание, что платформа Android обеспечивает только около 44100 Гц (даже не 24 кГц).
http://developer.android.com/reference/android/media/AudioRecord.html
sampleRateInHz
: частота дискретизации, выраженная в герцах. 44 100 Гц в настоящее время является единственной частотой, которая гарантированно работает на всех устройствах, но другие частоты, такие как 22 050, 16 000 и 11 025, могут работать на некоторых устройствах.
ИСХОДНЫЙ КОД
Вы найдете пример кода для воспроизведения этих проблем по адресу:
https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/
ТРЕК
Как преодолеть это ограничение?
можно ли использовать любой другой API? опенсл, альса, опенал? и как ?
Можно ли перенастроить драйвер alsa со стороны пользователя, чтобы иметь возможность сэмплировать выше 44100 Гц? ( .asoundrc )
Можно ли такое сделать без перепрошивки/рутирования/перезагрузки устройства
еще как обойти это? повышающая дискретизация (интерполяция) эффективно, используя собственный код?