我想设计一个小型 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/