我在Android模拟器上使用语音识别试图做一些事情.
最后安装了市场和谷歌语音搜索应用程序 - 我非常接近让我的模拟器做我想做的事 - 认识我的演讲.首先,我需要启用模拟器来录制音频,或者至少认为存在麦克风.
我相信adb曾经有过-mic选项 - 但我不认为它存在了.
有没有人这样做过,或者任何人都能对此有所了解.
我正在尝试运行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 …Run Code Online (Sandbox Code Playgroud) 我没有安卓手机,但无论如何我都在努力开发它.目前测试我的应用程序的唯一方法是使用我读过的不支持录音的模拟器.但是,我读到了启动命令"-audio",它允许使用'winaudio'后端从你的电脑输入/输出音频.我无法让它工作,是否可以使用我的电脑的麦克风录音?如果是这样,我做错了什么?
我想录制并将录制的声音传递给手机的扬声器,但我无法让录音代码正常工作(应用程序崩溃,请在此处查看我的尝试)所以我现在正在尝试查看模拟器是否可以执行与音频相关的任何操作或不.我复制了1秒的录音,包括wav(16位pcm,44k采样频率,单声道)和mp3(通过Audacity完成录制和转换)到sdcard.我可以在IDE的文件浏览器中看到这些文件,所以我想模拟器正在正确检测到SD卡.但我无法让模拟器的内置音乐播放器来检测它们(为什么??).
作为第二次尝试,我将代码HERE复制到示例hello world Android应用程序中.这是主要的活动类
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// String PATH_TO_FILE = "/sdcard/asMP3.mp3";
// String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/asMP3.mp3";
String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/wavSigned16bitPCM.wav";
MediaPlayer mp1 = new MediaPlayer();
try
{
mp1.setDataSource(PATH_TO_FILE);
mp1.prepare();
mp1.start();
Toast.makeText(getApplicationContext(), "HERE", Toast.LENGTH_SHORT).show();
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch …Run Code Online (Sandbox Code Playgroud) 我一直在试图让模拟器播放声音,因为在过去数天,但没有什么工作
,请看看我的其他问题,这里和这里
最糟糕的是我甚至不能确定是否使用模拟器与声音的任何作业(录音或甚至是可能的回放).一些论坛暗示这是可能的,其他人暗示它不是,但它根本不适合我的情况.如果没有别的,我假设至少内置于仿真器OS本身的声音功能应该工作.但我只是尝试播放内置TTS引擎提供的示例,它也没有给我任何输出.
如何通过模拟器获得任何声音,这甚至可能吗? - 编辑 - :解决了,请继续阅读,看看如何
我是否必须使用真正的设备进行声音相关的实验?在真实设备中也会出现同样的问题吗?顺便说一句,在真实设备上进行编程会像在模拟器中一样慢吗?还是快?或者它仍然缓慢但比模拟器稍快?我想确保在我得到一个真正的Android设备之前我可以做所有基本的东西.
-----编辑-----
我终于让声音工作了(至少是TTS样本)
事实证明启用快照导致了这个问题
**自从r10以来,MediaPlayer不再在模拟器上工作了吗? **
但这给我带来了一个完全不同的问题:
为什么世界上启用/禁用快照与audioplayback有什么关系?此外,如果我没有启用快照,则需要再次加载我想要使用的下一个领带,因此我必须启用快照功能
这是什么原因?为什么没有正确记录?
---更新---
在具有工作声音的虚拟设备中,我重新启动它启用快照,然后通过快照再次重新启动它,现在声音再次无效.因此看起来这与启用或禁用快照有关,而不是在拍摄快照时(因此可能使问题与Windows更新有关,如我在回答的问题中所解释的那样,无关紧要)