我注意到android.media.AudioRecord
无法正常工作
使用错误的sampleRateInHz
您还可以轻松复制该问题 在三星Nexus S(谷歌)上使用pcmrecorder:
https://market.android.com/details?id=com.kohei.android.pcmrecorder
http://ko-yasui.com/home/pcmrecorder/
因此,当硬件音频芯片支持高达96KHz时,它无法以48Khz记录:
http://www.wolfsonmicro.com/products/audio_hubs/WM8994/
这是设备/固件错误还是已知限制?
请注意,android平台仅保证大约44100Hz(甚至不是24KHz)
http://developer.android.com/reference/android/media/AudioRecord.html
sampleRateInHz
:采样率以赫兹表示。 44100Hz是目前唯一的费率 保证可以在所有设备上运行,但其他速率(如22050,16000和11025)可能适用于某些设备。
您可以在以下位置找到重现这些问题的示例代码:
https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/
如何克服这个限制?
可以使用任何其他API吗? opensl,alsa,openal?以及如何?
可以从用户端重新配置alsa驱动程序 能够在44100Hz以上采样? (.asoundrc)
是否可以做这样的事情 无需重新刷新/生根/重启设备
否则如何解决这个问题? 使用本机代码有效地进行上采样(插值)?
答案 0 :(得分:2)
nexus s支持的最大采样率为44.1 kHz,当Android平台请求将采样率设置为48或更高时,音频硬件会抛出错误。要回答您的问题,采样率的限制取决于您运行程序的特定硬件。我在我的nexus s上尝试了你的代码并获得了与你相同的结果,但是如果我在旧的mytouch 3g上尝试它,最大采样率可能是22.05 kHz。基本上,您需要在初始化音频配置时检查支持的采样率范围。