为什么在Android模拟器上使用语音记录器是不可能的?

时间:2011-03-29 12:18:43

标签: android android-emulator audio-recording microphone

我正在尝试运行Android 2.2模拟器附带的Speech Recorder。问题是我点击“录制”按钮的那一刻:

enter image description here

中止并显示错误消息“应用程序语音记录器(进程com.android.speechrecorder)已意外停止。请再试一次。”

enter image description here

问题是再次尝试无济于事。

现在,我搜索了StackOverflow并对整个互联网进行了梳理,我发现了许多同样问题的报告,没有任何可行的解决方案。

我的结论是,由于一些奇怪的原因,Android模拟器能够使用Windows音频设备进行输出,但不能用于输入。

为什么?

我知道其他虚拟化软件(例如VMWare)使用主机音频设备的输出和输入部分都没有问题。

另外,如果Speech Recorder从未为任何人的模拟器工作,为什么要把它放在那里?

当然这对某人有用。有没有办法让Speech Recorder为我工作?

我使用的是32位Windows XP,而我的AVD是用SD卡定义的(在启动时安装)。

更新:我按照@Klaus的建议尝试查看是否抛出任何异常。我这样做只需在命令行输入 ddms.bat 即可启动独立版本的DDMS(底部有一个logcat显示)。果然,点击“录制”按钮后我收到以下异常:

03-29 14:16:58.195: ERROR/AudioRecord(303): Could not get audio input for record source 1
03-29 14:16:58.195: ERROR/srec_jni(303): initCheck error -22 
03-29 14:16:58.205: DEBUG/SpeechRecorderActivity(303): run audio capture thread
03-29 14:16:58.205: WARN/dalvikvm(303): threadid=8: thread exiting with uncaught exception (group=0x4001d800)
03-29 14:16:58.215: ERROR/AndroidRuntime(303): FATAL EXCEPTION: Thread-9
03-29 14:16:58.215: ERROR/AndroidRuntime(303): java.lang.NullPointerException
03-29 14:16:58.215: ERROR/AndroidRuntime(303):     at com.android.speechrecorder.SpeechRecorderActivity$4.run(SpeechRecorderActivity.java:192)
03-29 14:16:58.285: WARN/ActivityManager(59):   Force finishing activity com.android.speechrecorder/.SpeechRecorderActivity
03-29 14:16:58.904: DEBUG/dalvikvm(59): GC_FOR_MALLOC freed 13324 objects / 656184 bytes in 197ms
03-29 14:16:59.915: INFO/ARMAssembler(59): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x20db68:0x20dc24] in 1247352 ns
03-29 14:17:05.251: DEBUG/SpeechRecorderActivity(303): stopRecording

我如何从这里开始?我没有编写Speech Recorder应用程序,因此我不知道是什么原因导致在SpeechRecorderActivity.java第192行出现NullPointerException。我认为这与早期的logcat消息有关:

  

无法获取录音的音频输入   来源1

但问题又是为什么?

为什么它不能“获取录音源1的音频输入”?

1 个答案:

答案 0 :(得分:3)

您遇到此问题的原因是模拟器没有要挂钩的audioInput。您最好的选择是插入一个真实设备并在那里进行测试。