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

srf*_*srf 13 android microphone audio-recording android-emulator

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

在此输入图像描述

它中止了一条错误消息"应用程序语音记录器(进程com.android.speechrecorder)意外停止.请再试一次."

在此输入图像描述

问题是再次尝试并没有帮助.

现在,我搜索了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
Run Code Online (Sandbox Code Playgroud)

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

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

但问题又是为什么呢?

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

Chr*_*ell 3

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

  • http://developer.android.com/guide/topics/media/index.html - 具体来说,第 3 段说“请注意,模拟器没有捕获音频或视频的硬件,但实际的移动设备可能会提供这些功能可以通过 MediaRecorder 类访问。 (3认同)