我的问题很容易解释——我试图创建一个 AudioRecord 对象,但它无法初始化(即在构造函数之后,getState 返回 0,表示失败)。我在运行 OS 2.2.1 的 MotoDroid 1 上从 Eclipse 运行它。我的 AndroidManifest.xml 是,AFAIK,使用正确的权限,RECORD_AUDIO(我不知道如何确认):
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<activity android:name=".SphinxMic"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我执行以下操作来创建 AudioRecord:
bufferSize = AudioRecord.getMinBufferSize(8000, CHANNEL_IN_MONO, ENCODING_PCM_8BIT);
audioRecorder = new AudioRecord(AudioSource.MIC, 8000, CHANNEL_IN_MONO, ENCODING_PCM_8BIT, 50*bufferSize);
if (audioRecorder.getState() != AudioRecord.STATE_INITIALIZED)
throw new Exception("AudioRecord init failed");
audioRecorder.getState() 返回 0(即 STATE_UNINITIALIZED)
我还没有找到任何使用此 API 的完整示例,而且我是一名 Android 初学者,所以解决方案可能很简单。我该怎么做才能找出失败的原因?
一些人提出了类似的问题,但他们肯定遇到了与我不同的问题,因为他们批准的修复对我没有帮助。最值得注意的是这个。但是批准的解决方案令人困惑,无论如何都对我不起作用。我还尝试了各种比特率(8000、16000、11025、44100),包括单声道和立体声以及 8 位和 16 位。没有组合返回成功初始化。