Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 麦克风输入_Android_Android Mediarecorder - Fatal编程技术网

Android 麦克风输入

Android 麦克风输入,android,android-mediarecorder,Android,Android Mediarecorder,我正在尝试构建一个使用Android检测手枪射击的小工具。这是手枪射击训练辅助的一部分,它告诉我射击是如何及时分配的,我使用HTC纹身进行测试 我使用MediaRecorder及其GetMaxAmplication方法在最后1/100 s内获得最高振幅,但它没有按预期工作;speech为我提供的GetMaxAmplificate值范围为0到25000左右,而手枪射击(或喊叫!)仅达到15000左右。采样频率为8kHz时,应存在一些具有相当高水平的样本 有人知道这些东西是怎么工作的吗?在记录最大振

我正在尝试构建一个使用Android检测手枪射击的小工具。这是手枪射击训练辅助的一部分,它告诉我射击是如何及时分配的,我使用HTC纹身进行测试

我使用MediaRecorder及其GetMaxAmplication方法在最后1/100 s内获得最高振幅,但它没有按预期工作;speech为我提供的GetMaxAmplificate值范围为0到25000左右,而手枪射击(或喊叫!)仅达到15000左右。采样频率为8kHz时,应存在一些具有相当高水平的样本

有人知道这些东西是怎么工作的吗?在记录最大振幅之前是否应用了滤波器。如果是,是硬件还是软件

谢谢,
/乔治

似乎有一个AGC(自动增益控制)滤波器。您还应该能够通过其频率特性来识别快照。我希望它能出现在大部分可听见的频谱中,但要使用频谱分析仪(应用程序市场上有一些,如SpectralView),并尝试通过频率“特征”和振幅来识别事件。如果你拍手,你得到的最大振幅是多少?你也可以试着在手机上盖上一些东西,像几层布一样消声

好像AGC在媒体录音机里。当我使用录音时,我可以使用振幅来检测镜头,即使它有时会对镜头以外的声音做出反应。这不是问题,因为射手在射击时通常不会发出任何其他噪音。
但我也会做一些FFT来完善它:-)

听起来好像你解决了agc问题。还有一个建议:我不确定FFT是否适合这项工作。使用滑动功率估计器,您可能会有更好的检测和更低的CPU使用率

e、 g。 信号=>平方=>移动平均=>峰值检测

所有这些都可以使用定点数学非常有效地实现,这非常适合移动android平台


您可以通过搜索“Parseval定理”和“CIC滤波器”(级联积分器梳)找到更多信息;我没有看到这个问题,直到我开始寻找一个不同的问题

我已经启动了一个应用程序来执行我认为您正在尝试的操作。这是一个基于音频的圈速计时器(启动/停止录制的按钮,以及用于圈速设置的巨大音频噪音)。它还没有完成,但可能会为您提供一个良好的基础来开始

现在,它允许您监控来自麦克风的信号音量,并设置环境噪声量。它还使用了新的BSD许可证,因此请在此处查看代码:。它被设置为使用1.5API来包含尽可能多的设备

它还没有完成,因为它有两个主要问题:

  • 由于请求的频率不受支持,音频捕获当前不适用于模拟设备
  • 计时器功能还不起作用-我们首先关注的是获取音频捕获
  • 我正在研究频率支持,但安卓似乎没有办法在没有每台设备反复试验的情况下找出支持哪些频率

    我在本地开发机器上还有一些额外的代码,用于为listview项目创建布局,以显示“lap”信息。但是,由于频率问题而偏离了方向。但是,由于显示和音频捕获基本完成,使用系统时间填充定时信息的显示值应该相对简单,然后添加将数据表导出到SD卡上的CSV的功能应该不会太困难


    如果你想加入这个项目,或者你有任何问题,请告诉我。

    如果你有一堆这样的手机,你可以把它们分散开来,借助GPS系统,用它们来定位狙击手。你确定你在正确的时间打电话给GetMaxAmpliance吗?“返回自上次调用此方法以来采样的最大绝对振幅”你可能在错误的时间采样?@Spike:如果苹果拒绝“摇晃婴儿”,我想谷歌将不得不拒绝“发现狙击手”。Donald,我每秒调用100次函数,因为这是我拍摄时需要的结果,我看到我的应用程序对语音有反应。快照的频谱为3kHz,比正常语音高一点。麦克风输入中可能有一个低通滤波器:-(@Donal Rafferty:我遇到了你所描述的问题。我不确定Android轮询振幅的速度有多快,但如果你做得太快,那么它会返回很多0。喊叫和鼓掌也会被抑制,所以你对AGC的看法可能是对的。但它会踢得那么快吗?GetMaxAmpliance似乎是avo的一条好捷径我正在做频谱分析…谢谢!