Android 录音不';我不为摩托罗拉里程碑工作

Android 录音不';我不为摩托罗拉里程碑工作,android,android-audiorecord,Android,Android Audiorecord,我只是在摩托罗拉里程碑上遇到了这个问题。代码: // init recorder recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 8000); recordInstance.startRecording(); //more code here

我只是在摩托罗拉里程碑上遇到了这个问题。代码:

// init recorder
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
    8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT, 8000);

recordInstance.startRecording();

//more code here

recordInstance.stop();
我拥有的错误信息(目前无法找到更多信息,因为我自己没有调试的里程碑):

显然,我不是唯一一个有这个问题的人。我发现了一些非常相似的线程(没有解决方案):


首先,正如它所说的,尝试在停止上放置一个try-catch块,正如debugs消息所说的,录制进入非法状态

如果你能捕捉到异常,你可能会发现问题所在

这应该有效:

recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 16000);

只需坚持标准采样率。我想知道为什么Milestone不支持8位编码的录制。这也给了我一个错误——“无效的音频格式”。

问题不是参数,问题是摩托罗拉修补Android的缺陷,如果模式处于调用状态,音频记录将无法正常创建,如果模式正常,则应该可以


这是因为Motorolas代码中的某些内容在其处于呼叫模式时占用了输入。

理论上,hcpl的代码应该可以工作,因为语音采样是8kHz,但一些android设备不接受它

在Android开发者网站上填写mad答案:

sampleRateInHz int:以赫兹表示的采样率。44100Hz是 目前唯一保证在所有设备上运行的速率,但是 其他速率(如22050、16000和11025)可能在某些设备上起作用。 AudioFormat.SAMPLE_RATE_未指定的方式使用路由相关 值,通常是源的采样率。getSampleRate() 可用于检索所选的实际采样率


我做了,但除了报告的java.lang.IllegalStateException之外,我没有得到更多的信息,其中包含消息:android startRecording在未初始化的录音机上调用。您可以使用getState函数检查状态,以便至少可以避免崩溃。此崩溃是因为由于某些原因,您的录音未初始化。最好在开始后立即执行,然后抛出相应的错误消息。谢谢您的回答。我知道我必须添加一些try-catch,但我想知道是否有人知道什么设备的工作值?我相信这些是特定于供应商的?
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 16000);