【问题标题】:Why is it impossible to use the Speech Recorder on the Android emulator?为什么无法在安卓模拟器上使用语音记录器?
【发布时间】:2011-07-25 05:58:15
【问题描述】:

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

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

问题是再试一次也没有用。

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

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

这是为什么呢?

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

另外,如果 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 的音频输入”?

【问题讨论】:

  • Err... 有没有发现异常?您所放的只是强制关闭消息,通常在此之前会捕获很多异常。向我们展示您的 LogCat 输出中的异常(全部)。
  • 本可以发誓你在这里发表了评论 - 它对我来说也崩溃了:03-29 14:13:38.075: ERROR/AudioRecord(282): Recording parameters are not supported: sampleRate 11025, channelCount 1, format 1 03-29 14:13:38.075: ERROR/srec_jni(282): initCheck error -22 03-29 14:13:38.104: ERROR/AndroidRuntime(282): FATAL EXCEPTION: Thread-8 03-29 14:13:38.104: ERROR/AndroidRuntime(282): java.lang.NullPointerException 03-29 14:13:38.104: ERROR/AndroidRuntime(282): at com.android.speechrecorder.SpeechRecorderActivity$4.run(SpeechRecorderActivity.java:192) 不知道你为什么在乎。 :3 没有源代码。
  • @Klaus 是的,我发布了一个问题,但在我自己找到答案后将其删除(见上文)。谢谢,再次+1。 :)
  • 您对 Java 应用还有什么期望?

标签: android android-emulator audio-recording microphone


【解决方案1】:

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

【讨论】:

  • developer.android.com/guide/topics/media/index.html -- 具体来说,第 3 段说 Note that the emulator doesn't have hardware to capture audio or video, but actual mobile devices are likely to provide these capabilities, accessible through the MediaRecorder class.
  • 如果您将麦克风插入系统,模拟器应该会使用它。请参阅此讨论:groups.google.com/group/android-developers/browse_thread/thread/…
  • @Brian 我的系统中已经插入了一个麦克风。它不使用它。 @Chris 谢谢和 +2。
  • 文档有误。如果您插入了麦克风,它就可以工作。
  • @Mrchief 文档错误的,您可以从模拟器获得音频输入。不幸的是,它并不总是像插入麦克风那么简单。有些机器显然有问题。在我的 MacBook Pro 上,它在 OSX 下运行良好,但在我的 Windows 7 VM 下,却不行。直到最近,音频输入才在文档中被列为限制。
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2014-03-17
  • 2019-11-17
相关资源
最近更新 更多