【发布时间】:2010-12-19 10:06:54
【问题描述】:
我的问题很容易解释——我试图创建一个 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 初学者,因此解决方案可能很简单。我该怎么做才能找出失败的原因?
有些人提出了类似的问题,但他们肯定遇到了与我不同的问题,因为他们批准的修复对我没有帮助。最值得注意的是this。但是批准的解决方案令人困惑,无论如何都对我不起作用。我还尝试了各种比特率(8000、16000、11025、44100),包括单声道和立体声以及 8 位和 16 位。没有组合返回成功初始化。
【问题讨论】:
-
logcat 说什么?还可以尝试将使用权限移出应用程序。 afaik 它应该放在清单中。
-
由于某种原因,LogCat 在运行几次后停止显示大部分日志信息——但这是另一个问题。我会将您的使用权限评论标记为答案......如果它是一个(因为它有效!)
标签: android microphone audiorecord android-audiorecord