我试图找出监控加速计传感器的最佳方法,轮询速率小于.25毫秒。我已经为用户实现了一个UI选项,可以切换到恒定的监控状态,并清除电池耗尽的后果。由于Android处理清理内存和线程的方式,远程服务是否是守护程序线程的最佳方式?关键是要使加速度计尽可能接近监控,电池耗尽。这种监控需要长时间运行,甚至可能超过24小时,我再次意识到功耗的后果。任何建议的阅读或代码片段将不胜感激。
只是一个寻求Android社区智慧的新手。提前谢谢,
-Steve
澄清:我试图检测加速度发生变化的瞬间。我的代码通过轴进行区分,但从加速度计获取实时数据是我的目标。
答案 0 :(得分:2)
我们使用Android Services执行此操作 - 它们可以从活动启动,但仍在后台运行。这可能就是你要找的! 一些Howtos:
答案 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毫秒似乎合理甚至更高)。一旦你发现某事,就减少 延误。所有这些都取决于您的申请。