Android 安卓系统中的背景传感器数据采集器

Android 安卓系统中的背景传感器数据采集器,android,service,background,Android,Service,Background,我现在正在编写一个程序,收集传感器数据,例如一整天的加速度计值 目前,我只使用一个活动,并运行了一整天的活动(我关闭屏幕自动黑),不做任何短消息或电话在白天 我听说我可以使用服务在后台制作这种长时间运行的数据采集器。但是在我检查了计步器之后。我发现,当屏幕变黑时,计步器不工作。(但像predometer这样的应用程序在任何情况下都应该工作,只要电源打开。) 虽然我不关心总是感应加速度计的电源问题,但我确实希望将屏幕变黑以节省屏幕中的电源,从而记录更多的加速度计数据点 我在考虑两种方法: 1.然而

我现在正在编写一个程序,收集传感器数据,例如一整天的加速度计值

目前,我只使用一个活动,并运行了一整天的活动(我关闭屏幕自动黑),不做任何短消息或电话在白天

我听说我可以使用服务在后台制作这种长时间运行的数据采集器。但是在我检查了计步器之后。我发现,当屏幕变黑时,计步器不工作。(但像predometer这样的应用程序在任何情况下都应该工作,只要电源打开。)

虽然我不关心总是感应加速度计的电源问题,但我确实希望将屏幕变黑以节省屏幕中的电源,从而记录更多的加速度计数据点

我在考虑两种方法:

1.然而,如计步器应用所示,使用服务。当屏幕变黑时,服务似乎也停止工作了!也许代码有bug

2.我的申请仍然是一项活动。但我把scrren灯改成0或全黑以节省电能

我的问题是:1)即使屏幕长时间变黑,服务是否有能力始终运行;对于2,如何更改屏幕灯光


谢谢

关于1-您需要的是远程服务。这是一项几乎类似于“本地”服务(在计步器示例中使用)的服务,但即使没有任何活动绑定到它,也可以在后台运行。您可以关闭屏幕,甚至活动也可能崩溃(在坏的情况下;),但如果您使用startService(…)而不是bindService(…)启动服务,该服务将继续运行

试着通过,看看是否有帮助


关于2-你真的应该使用(1);)

您不需要远程服务-这可以通过本地
服务来完成

对服务使用命令模式而不是绑定模式,即使用
startService()
/
stopService()
而不是
bind()
/
解除绑定()

在您的服务
onStartCommand()
方法中,返回
service.START\u REDELIVER\u INTENT
或类似内容,以使服务寿命长于
活动

现在的诀窍是:要在手机进入睡眠状态时保持服务的正常处理,您需要使用一个。这些都很难得到正确的答案,我不认为这个答案需要一个完整的解释

以下是更多信息:

  • 也可以试试Lars Vogel的博客:



很抱歉给出了简要的回答,但您的问题涉及到一些高级主题,涉及面相当广泛。

对于大多数场景,可以使用
IntentService
实现后台服务

确保后台服务在最新和较早的Android版本(如2.3或2.2)中工作

设计后台操作与Android 4.0不同


请注意,一整天收集传感器数据的后台服务会耗尽您的电池电量。您应该确保服务不会在未满足的情况下运行(可能在任务栏中有一个很好的小通知)