【问题标题】:Constantly monitor a sensor in Android持续监控 Android 中的传感器
【发布时间】:2011-06-12 17:50:21
【问题描述】:

我正在尝试找出以小于 0.25 毫秒的轮询速率监控加速度传感器的最佳方法。我已经为用户实现了一个 UI 选项来切换到持续监控状态,并明确了电池消耗的后果。由于 Android 处理清理内存和线程的方式,远程服务是否是守护线程的最佳方式?关键是让加速度计尽可能地接近持续监测,电池消耗是该死的。而且这种监控需要长时间运行,甚至可能连续24小时以上,我再次意识到功耗的后果。任何建议的阅读或代码 sn-ps 将不胜感激。

只是一个寻求 Android 社​​区智慧建议的新手。提前致谢,

-史蒂夫

澄清:我正在尝试检测加速度发生变化的那一刻。我的代码按轴区分,但我的目标是从加速度计获取实时数据。

【问题讨论】:

  • android 上的加速度是传感器 btw。它推动,你不能明智地从中提取价值!
  • @LordT - 重读后我意识到我可以更好地表达。我正在使用自定义侦听器接口来接收来自加速度传感器的更新。感谢您指出这一点。
  • 哦,好吧,这更有意义。如前所述,我会为此使用服务 - 使用远程服务将允许您在后台运行
  • Steve - 您从对加速度计事件的长期监控中学到了什么?排水量是多少?设备之间的差异很大吗?
  • @brunobowden 我能够找到一种解决方案,该解决方案在监控 > 24 小时时不会显着影响电池/cpu/热量的产生。无论设备/操作系统版本如何,该解决方案似乎都具有相同的好处。不幸的是,我提出的解决方案是专有的,但我是基于其他基于加速度计的 SO 问题得出的这个解决方案。至于功耗,试试stackoverflow.com/a/5177427/549510

标签: android multithreading daemon


【解决方案1】:

我们使用 Android Services 完成了这项工作 - 它们可以从 Activity 启动,但仍然在后台运行。这可能就是您要寻找的东西!
一些方法:

  1. http://developerlife.com/tutorials/?p=356
  2. http://developer.android.com/guide/topics/fundamentals.html#procthread

【讨论】:

  • 虽然发帖者对耗电不感兴趣,但我有点好奇——到底有多糟糕?
  • 我不记得确切的数字,但是对于我们的完整设置,我们从 G1 中得到了大约 10 个小时(回到那些日子:)) - 然而,那是计算心率和其他数字>300Hz 并通过蓝牙传输。我认为我们仅使用加速度计就获得了 16 个多小时
  • 设备休眠怎么办?一旦设备进入睡眠状态并关闭这些传感器,您将不会获得任何传感器更新。您是否一直使用唤醒锁运行?
【解决方案2】:

使用特定线程进行监视和等待是让您在等待期间具有灵活性的最佳解决方案。这非常有效,因为它不需要任何特定的服务。

class MonitorThread extends Thread {
    ...
    public void run() {
        for (;;) {
            long ms = 0;
            int nanos = 250000;
            ... // Do something or compute next delay to wait
            try {
                Thread.sleep(ms, nanos);
            } catch (InterruptedException ex) {
            }
        }
    }
}

见http://developer.android.com/reference/java/lang/Thread.html

您指定了一个非常短的延迟(0.250 毫秒),因此这将占用大量 CPU。 您可能可以使用加速度计的结果来增加或减少此延迟。 例如,如果检测到没有加速,则增加延迟(它是 对你来说,但 100 毫秒似乎是合理的,甚至更高)。一旦你发现一些东西,减少 延误。这一切都取决于您的应用程序。

【讨论】:

  • 在 android 上,如果你真的需要这个,我真的会为此使用处理程序!
  • @ciceron- 我正在尝试检测加速度发生变化的那一刻。我的代码按轴区分,但目标是从加速度计获取实时数据。感谢您关于使用加速度数据控制睡眠间隔的建议,好主意!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
相关资源
最近更新 更多