在AmbientMode (Android wear)中显示healthService数据,例如步长



我想在AmbientMode中显示步数、步速等健康服务数据。

但是HealthServices(使用ExerciseClient https://developer.android.com/training/wearables/health-services/active)似乎在进入环境模式时进入睡眠状态。

我尝试使用AmbientUpdate与AlarmManager,但HealthServices没有唤醒。如果你有解决这个问题的好方法,请告诉我。

我想在AmbientMode中改变屏幕中间的数据。

请帮帮我。

请添加显示如何设置到HealthServices的连接的相关代码。这将使人们更容易帮助你。与此同时,这里有一些建议供您参考:

  1. ExerciseClient只会在你有一个监听器设置的积极锻炼时向你发送数据。听起来你确实在互动模式下获得更新,所以我假设这部分对你有用。确保你不会意外地结束你的锻炼,例如在onPause或其他生命周期方法/函数中,当应用程序失去焦点时调用(这种情况发生在设备进入环境模式时)。

  2. 确保您已经按照规范中概述的方式设置了前台服务,并且您拥有所需的权限。否则,当设备进入环境模式,你的应用程序被发送到后台时,你可能会遇到问题。

使用连续运行的ForegroundService与ExerciseClient一起使用,以确保整个锻炼过程的正确操作。

在请求位置数据时使用ForegroundService是必不可少的。您的清单文件必须指定foregroundServiceType="location并指定适当的权限。

注意:如果您的应用程序遇到auto_endd_permission_lost错误,这可能是由于缺少具有适当位置权限的ForegroundService。

  1. 值得注意的是,当设备处于环境模式时,您将获得较少的数据。HealthServices将进行更多的数据批处理,以尽量减少对电池寿命的影响。频率和批大小根据您请求的度量类型而变化。请确保您为数据提供了足够的时间,并且您正在正确地解析批处理数据点。

  2. 确保在你结束锻炼时给ExerciseClient足够的时间来刷新所有数据点,否则你可能会丢失数据。

最后,实际上如果你不运动跟踪,你最好使用PassiveMonitoringClient。

要在后台接收数据更新,请使用PassiveMonitoringClient。你的应用必须在AndroidManifest.xml中声明BroadcastReceiver。当您注册以接收来自运行状况服务的更新时,这些更新将传递给此接收者。

最新更新