为什么在Android模拟器上无法使用录音机?
我正在尝试运行 Android 2.2 模拟器附带的语音记录器。问题是,当我单击“记录”按钮时:
它会中止并显示错误消息“The应用程序语音记录器(进程 com.android.speechrecorder)已意外停止,请重试。”
问题是重试并没有帮助。
现在,我搜索了 StackOverflow,梳理了整个互联网,发现了许多关于同一问题的报告,但没有任何可行的解决方案。
我的结论是,由于某种奇怪的原因,Android 模拟器能够使用 Windows 音频设备进行输出,但不能用于输入。
这是为什么?
我知道其他虚拟化软件(例如VMWare)使用主机音频设备的输出和输入部分没有问题。
另外,如果语音记录器从未适用于任何人的模拟器,为什么要把它放在那里?
当然这对某人有用。有没有办法让语音记录器也为我工作?
我使用的是 Windows XP 32 位,我的 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
我该如何继续?我没有编写语音记录器应用程序,所以我不知道是什么原因导致 SpeechRecorderActivity.java 第 192 行出现 NullPointerException。我相信这与早期的 logcat 消息有关:
无法获取用于录制的音频输入 来源1
但问题又是为什么?
为什么无法“获取记录源 1 的音频输入”?
I am trying to run the Speech Recorder that comes with the Android 2.2 emulator. The problem is that the moment I click the "Record" button:
It aborts with an error message "The application Speech Recorder (process com.android.speechrecorder) has stopped unexpectedly. Please try again."
The problem is that trying again doesn't help.
Now, I searched StackOverflow and I combed the entire Internet and I found many reports of the same problem, without any working solution.
My conclusion is that, for some strange reason, the Android emulator is capable of using the Windows audio device for output, but not for input.
Why is that?
I know that other virtualization software (e.g. VMWare) have no problem using both output and input sections of the host's audio device.
Also, if Speech Recorder never worked for the emulator for anyone, why put it there?
Surely this has worked for someone. Is there a way to make Speech Recorder work for me, too?
I am using Windows XP 32-bit and my AVD is defined with an SD card (mounted upon start).
Update: I followed the suggestion by @Klaus to try and see whether any exceptions are thrown. I did so by simply typing ddms.bat at the command line to launch a stand-alone version of DDMS (with a logcat display at the bottom). Sure enough, I receive the following exception upon clicking the "Record" button:
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
How do I proceed from here? I didn't write the Speech Recorder app, so I don't know what causes the NullPointerException at SpeechRecorderActivity.java line 192. I believe this has something to do with an earlier logcat message:
Could not get audio input for record
source 1
But the question again is why?
Why wasn't it able to "get audio input for record source 1"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您遇到此问题的原因是模拟器没有要挂钩的音频输入。最好的选择是插入一个真实的设备并在那里进行测试。
The reason you're having this issue is that the emulator doesn't have an audioInput to hook. Your best bet is to plug a real device in and do testing there.