【发布时间】:2011-06-15 23:58:11
【问题描述】:
我在为 Android 初始化 AudioRecord 时遇到了这个问题。我在网上搜索了很长时间,没有成功。
对于手机,我在 SDK 版本 7 上使用三星 GalaxyS。对于 AudioRecord 初始化,我使用 8000 作为采样率,单声道配置为单声道,音频格式为 16 位,并根据log,minBufferSize设置为4160。我在manifest中添加了AUDIO_RECORD权限。
我的初始化代码如下:
...
private static int SAMPLE_RATE = 8000;
private static int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private static int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
// ??? Both 8Bit and Default are deemed illegal.
public MicVolumeManager() {
this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT);
PhoneDebugger.debug("AUDIO-BUFFER-SIZE",
Integer.toString(this.bufferSize));
this.recorder = new AudioRecord(AudioSource.MIC, SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT, this.bufferSize);
this.audioBuffer = new byte[this.bufferSize];
}
...
但是,对象 (this.recorder) 未能初始化。以下来自使用 DDMS 的日志:
AUDIO-BUFFER-SIZE(3253): 4160
AudioRecord(3253): set():sampleRate 8000,通道 16,frameCount 2080
AudioPolicyManager(2175): getInput() inputSource 1, samplingRate 8000, format 1, channels 10, acoustics 0
AudioFlinger(2175): openInput() openInputStream 返回输入0x0,SamplingRate 8000,格式 1,通道 10,声学 0,状态 -17
AudioRecord(3253): 无法获取记录源 1 的音频输入
AudioRecord-JNI (3253): 创建 AudioRecord 实例时出错:初始化检查失败。
AudioRecord-Java(3253): [ android.media.AudioRecord ] 错误代码 -20 初始化原生 AudioRecord 对象时。
有什么帮助吗?非常感谢!
【问题讨论】:
标签: android audio-recording android-sdk-2.1 android-audiorecord