不断监控Android中的传感器

时间:2011-01-20 20:34:50

标签: android multithreading daemon

我试图找出监控加速计传感器的最佳方法,轮询速率小于.25毫秒。我已经为用户实现了一个UI选项,可以切换到恒定的监控状态,并清除电池耗尽的后果。由于Android处理清理内存和线程的方式,远程服务是否是守护程序线程的最佳方式?关键是要使加速度计尽可能接近监控,电池耗尽。这种监控需要长时间运行,甚至可能超过24小时,我再次意识到功耗的后果。任何建议的阅读或代码片段将不胜感激。

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

-Steve

澄清:我试图检测加速度发生变化的瞬间。我的代码通过轴进行区分,但从加速度计获取实时数据是我的目标。

2 个答案:

答案 0 :(得分:2)

我们使用Android Services执行此操作 - 它们可以从活动启动,但仍在后台运行。这可能就是你要找的! 一些Howtos:

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

答案 1 :(得分:1)

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

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

指定非常短的延迟(.250 ms),因此这将是CPU密集型的。 您可以使用加速度计的结果来增加或减少此延迟。 例如,如果您检测到没有加速度,请增加延迟(它会增加 对你而言,100毫秒似乎合理甚至更高)。一旦你发现某事,就减少 延误。所有这些都取决于您的申请。