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

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

在此处输入图像描述

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

在此处输入图像描述

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

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

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

这是为什么?

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

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

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

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

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

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的音频输入”?

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