我想开发一个android应用程序来捕捉周围环境中的音频(就像录音机一样,不只是用户的声音,而是任何音频)。因此,我正在寻找一种方法来测试这个应用程序使用android模拟器(任何免费的android模拟器)。
我在这个问题上发现了很多问题,但没有真正的答案:
安卓的音频捕获文档告诉我,这是不可能的:
注意:安卓模拟器不具备捕捉音频的能力,但实际设备很可能提供这些功能。
这个问题的答案告诉我,通过一些AVD配置是可能的:
您需要向模拟器添加音频录制+回放支持(Android和AVD管理器、->虚拟设备、->编辑->硬件-> New)。
但我不知道在哪里能找到这些“虚拟设备->”菜单选项(或者不管它们是什么),我甚至认为它们不再存在于当前的AVD管理器和SDK管理器中。
因此,这个答案告诉我这是可能的,但只有在使用非常特定的AudioRecorder配置时才是可能的。
所有这些建议似乎至少是两年前的,所以我想它们并不是最新的。我知道我可以使用一个真正的设备,但目前还没有,这只会涵盖应用程序在一个特定设备上的一个版本的android上的行为。我真的需要更多的测试。
在模拟器上测试和调试音频捕捉应用程序是可能的吗?
是否有一种方法可以在模拟器上捕获音频输入(可能使用比标准模拟器更多的仿真程序?)
我能否以某种方式将麦克风的输入转发到我的个人电脑或我的扬声器,或者直接从一个音频文件(mp3,例如)?
我使用的是Windows8.1和AndroidStudio1.2.2
发布于 2015-07-03 21:49:24
是的,这是可能的。它只需要开始使用AudioRecord (或其他什么)进行记录,但是在某些情况下(取决于模拟器中使用的系统映像)记录只能在每秒8000个样本中执行。
例如,当我使用棒棒糖图像作为仿真器时,可以记录已声明的速率(44100),尽管它听起来像是重放。当使用Kitkat或更低的图像时,只能记录广告8000 When。
发布于 2017-02-27 22:29:57
就像另一个人说的,这是可能的。在AndroidStudio2.2.3中,您不需要上面列出的任何信息。它应该能工作..。假设你和我所用的设置相匹配。我目前使用的设置:
我是这样实例化OpenSL ES回放实例的:
// Set-up audio source.
SLDataLocator_AndroidSimpleBufferQueue lDataLocatorIn = {
SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, BUFFER_COUNT
};
SLDataFormat_PCM lDataFormat = {
SL_DATAFORMAT_PCM,
1, // numChannels
SL_SAMPLINGRATE_11_025 / 1000, // sample rate here
SL_PCMSAMPLEFORMAT_FIXED_16, // bitsPerSample
16, // containerSize
SL_SPEAKER_FRONT_CENTER, // channelMask
SL_BYTEORDER_LITTLEENDIAN
};
SLDataSource lDataSource = { &lDataLocatorIn, &lDataFormat };
SLDataLocator_OutputMix lDataLocatorOut = {
SL_DATALOCATOR_OUTPUTMIX,
outputObj_
};
SLDataSink lDataSink = {
&lDataLocatorOut,
NULL
};由于某些原因,API 25模拟器不支持11025采样率(状态为22的错误.这条日志行发生在AudioRecord中,这是我不直接使用的另一个Android )。我甚至无法理解为什么我最近才开始工作,但我目前正在调查它。
https://stackoverflow.com/questions/31211536
复制相似问题