2014-02-07 28 views
4

我想设计一个小型Android应用程序,当麦克风的阈值高于特定原始值时触发事件。Android中麦克风阈值监控的最低电池消耗量

沿着这个东西线:http://code.google.com/p/android-labs/wiki/NoiseAlert

因为它是一个永远在线的服务,我想保持电池电量消耗至最低限度。

我知道声音幅度不是由系统处理的东西(我是对吗?),所以我必须从原始值计算出来。另外,如果不进行记录,我无法测量振幅...

因此,让我保证CPU的最小工作量。我可以使用最低的8kHz样本,但即使这样,仅仅是为了计算适应度而过度。

有没有办法使用超低采样率,如50Hz甚至20Hz?

一般来说,有什么建议可以帮助我使用该应用程序将蝙蝠消耗降到最低...?

非常感谢!

+1

“永远在线的服务”+音频录制在Android上并不是特别好的组合。许多(大多数?)Android设备在任何时候都只允许一个音频录制实例,所以您的服务将有效地打破所有其他想要录制音频的应用。我没有看过KitKat,看看这个问题是否已经解决,但我记得它对Jellybean来说是一个问题。 – Michael

回答

0

这真的很快吸干电池。而拥有扁平电池的手机则是一种糟糕的用户体验。

我怀疑采样率会对功耗产生巨大影响。但是,缓冲期将会。

虽然手机需要保持音频编解码器,DMA引擎和内存控制器几乎一直处于活动状态,但至少可以限制CPU唤醒的次数(耗电高的操作)。另外,一次处理大量样本的每个样本相当便宜,而且很少处理少量样本。

无论AudioFlinger是否修改了自己的缓冲期以响应活动应用程序,我都不知道。你可能不得不直接与ALSA(在有它的手机上)。这还具有减少每个缓冲区执行的代码量的好处。

+2

我只是补充说,一些移动平台(高通公司的MSM8974想起)支持在平台级别上的始终在线的语音检测/识别,据推测这是高效的,并且不会干扰想要录制音频的应用程序。但只要这种类型的功能是非标准的,我怀疑它只适用于OEM。 – Michael