android - Android 中麦克风阈值监控的最低电池消耗

标签 android performance audio microphone

我想设计一个小型 Android 应用程序,当麦克风的阈值高于特定原始值时触发事件。

大致如下:http://code.google.com/p/android-labs/wiki/NoiseAlert

由于它是一项永远在线的服务,我希望将电池消耗保持在最低水平。

我知道声音振幅不是由系统处理的(我说得对吗?),所以我必须根据原始值计算它。此外,我无法在不记录的情况下测量振幅...

因此,我需要注意的是,CPU 的工作量最少。我可以使用最低的 8kHz 样本,但即便如此,仅仅为了计算幅度也太过分了。

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

一般来说,有什么建议可以帮助我使用该应用程序将 bat 消耗保持在最低限度...?

提前致谢!

最佳答案

这会很快吸干电池。电池没电的手机是一种糟糕的用户体验。

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

虽然手机需要保持音频编解码器、DMA 引擎和内存 Controller 几乎一直处于 Activity 状态,但您至少可以限制 CPU 被唤醒的次数(耗电操作)。此外,与不经常处理少量样本相比,一次处理大量样本的成本要低得多。

AudioFlinger 是否会修改自己的缓冲期以响应活跃的应用程序,我不知道。你可能必须直接使用 ALSA(在有它的手机上)。这具有减少每个缓冲期执行的代码量的额外好处。

关于android - Android 中麦克风阈值监控的最低电池消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630702/

相关文章:

android - 在 android 中使用 Google Url Shortener Api 时出现解析错误

mysql - MySQL/myisam 1000万行表18秒处理?

mysql - where 子句中的计算列 - 性能

javascript - Blazor 播放无文件生成的声音

javascript - 使用ajax加载wav文件

android - 将用 Java 制作的简单安卓游戏转换为 Facebook

android - 当两部手机连接到 PC 上时,adb 获得相同的序列号。我可以更改序列号吗?

javascript - 无法导航到 jquerymobile/phonegap 中动态添加的页面

java - 根据每个字符的出现次数有效地对字符串进行排序

Java播放AAC编码音频(JAAD解码器)