我为Android做计步器应用程序。操作原理如下: 首次启动应用程序时,运行以前台模式运行的服务。程序会提示用户登录Google帐户。如果一切正常,则创建GoogleApiClient对象。然后在成功连接的情况下创建Fitness.SensorsApi,其中我只询问系统的步数。由于我保留了大量数据,而不是数据库,我使用SharedPreferences,并在那里写入新数据。如果应用程序正在运行,则mainActivity每秒都会连接到SharedPreferences,以在屏幕上显示新值。一切工作都不错。但有时候,停止步数。这可能发生在白天有时它发生在重置计数器每天00:00后,有时几天没有问题。只帮助完全重启应用程序。
有几次是数据没有显示在屏幕上,但服务已经工作并记录了数据。 在这种情况下,在应用程序重新启动后,我立即收到整个时间段的数据(挂起屏幕)。服务本身是100%实时的,因为我每5秒在日志中发送一条消息。 如果某人面临类似的问题,请帮忙,原因可能是什么。 GoogleApiClient可能会丢失连接或其他内容。如何追踪错误?我将非常感激。
答案 0 :(得分:0)
查看Google健身documentation,了解如何在Google版本中连接Android应用。确保在项目中正确设置本指南,尤其是Connect to the fitness service所在的第5步。有关详细信息,请查看此SO question。
以下是有关如何从Fitness入口点访问Sensors API的示例代码。
GoogleApiClient client = new GoogleApiClient.Builder(context)
.addApi(Fitness.SENSORS_API)
...
.build();
client.connect();
PendingResult<Status> pendingResult = Fitness.SensorsApi.add(
client,
new SensorRequest.Builder()
.setDataType(DataType.TYPE_STEP_COUNT_DELTA)
.setSamplingDelay(1, TimeUnit.MINUTES) // sample once per minute
.build(),
myStepCountListener);
有关其他信息,请查看此链接。