三星远程开发测试平台

反馈 注册 登录

三星Galaxy Watch4 | 高效开发必看

适配指导 | Wear Health Services

Google在今年四月最新发布的Wear OS库中,推出了一项新功能:Health Services。通过Health Services即可利用系统能力,简化应用开发者的重复工作,使其更专注于开发独特功能来提升用户体验。

三星和Google在技术创新方面一直保持着深度的合作,三星最新一代Galaxy Watch4系列将首次搭载和Google深度定制的Wear OS 系统,兼容Wear OS应用。包括这次的新功能Health Services,也是三星和Google从软硬件共同打造。我们希望在三星设备上有更多中国应用使用Health Services功能,扩大应用的适配范围,为用户带来更可靠、更省电的使用体验。

1.   什么是Health Services

Health Services是各种传感器和相关算法的中介,为APP提供活动、锻炼和健康相关的高质量数据。Health Services会自动配置所有健身相关的传感器,收集传感器数据,并计算心率、距离、卡路里、海拔、楼层、速度、配速等指标。 APP可以直接从 Health Services得到这些数据,简化每个APP自己连接传感器、配置传感器、接收原始传感器数据、使用自己的算法来获取信息的繁琐过程。

1629344167900074705.png

Ø  Health Services 使用优化电源效率的传感器配置,节省电量。

Ø  统一计算方法,确保同一设备上所有APP的数据一致性。

Ø  APP可以利用在系统本地的强大算法,简化工作量。

2.   如何使用Health Services

     Google提供了Jetpack软件包:androidx.health:health-services-client:1.0.0-alpha01,为开发者提供了Health Services库。目前,该软件包支持Wear OS 3模拟器和即将推出的设备,未来也会推广到更多平台。


        2.1声明依赖项

        在应用或模块的 build.gradle 文件中,将 Google Maven 代码库添加到项目中,添加依赖项:

        

9.png

             

        为了与Health Services进行交互,在应用AndroidManifest.xml文件中添加以下内容: 

        

10.png


        2.2 按场景提供API


        根据使用场景,分为被动追踪和主动追踪。


            2.2.1    被动追踪


             如果您的APP需要跟踪用户全天的活动,那么 PassiveMonitoringClient 是一个绝佳选择。


            1.    了解设备可以跟踪哪种数据类型:

    

11.png

  

            2.     两种操作方式:数据收集和事件跟踪。数据收集适用于数据更新相对不频繁且随时间分布的长期体验。事件跟踪是指设置某种触发条件,例如达到特定步数、达到特定心率。


                    方式一:数据收集


                    被动数据收集适用于需要后台监视Health Services数据的应用。 APP可以选择接收所有数据点,或者只有与特定数据类型相关的数据点。

                    需要使用PassiveMonitoringClient在后台接收数据更新。Health Services批处理更新,数据点和用户活动状态可能反映过去发生的事件,应用需要利用对象中包含的时间戳正确评估数据。

                    1)使用 BroadcastReceiver 接收数据更新,在onReceive中,使用PassiveMonitoringUpdate.fromIntent解析数据。

14.png

            2)可以使用一组 DataType 注册一个 PendingIntent,用来接收数据。

                方式二:事件追踪

                注册事件和注册数据的流程类似,需要使用passiveClient.registerEventCallback进行回调注册。但有一点不同,每个事件都是单独注册,并可注册多个事件。如果需要处理多个event,则可以为每个event使用不同的BroadcastReceiver,或者使用不同的PendingIntent而使用相同的BroadcastReceiver。

                1.定义触发的事件:

17.png

                2.注册不同的PendingIntent,可以使用相同的BroadcastReceiver             

        2.2.2 主动追踪

    •  MeasureClient

        有时,用户需要查看当前的某个指标(例如心率),而不是锻炼时或全天的指标。在这些时候,MeasureClient 是合适的选择。APP只需通过注册支持的 DataType 回调来接收数据流即可,当不再需要回调时,将其取消注册。

        1.了解设备可以跟踪哪种数据类型:

13.png


        2.注册数据

        注册的每个回调是用于单个数据类型。

1634193697963002727.png

    • ExerciseClient

        ExerciseClient 是专为用于跟踪锻炼的应用而设计的,可提供多达 82 种不同的 ExerciseType,例如步行、跑步、舞蹈和水球等。在跟踪这些锻炼时,有 50 种不同的 DataType 可供选择,具体取决于锻炼类型和设备上可用的硬件。如需开始使用,只需执行以下操作即可:在 ExerciseConfig 中指定相关信息,调用 exerciseClient.startExercise 并通过更新监听器监听进度。

        

        1.了解设备可以跟踪哪种数据类型:

1634193895314026792.png

        2.配置锻炼跟踪

2.png

        3.注册锻炼状态更新

16.png

        2.3使用合成数据进行测试

        Google提供了模拟测试的方法,开发者只需要adb命令,就可以验证APP能否成功接收 Health Services 的数据更新。

        1)启用合成跟踪器:       

$ adb shell am broadcast \
-a
"whs.USE_SYNTHETIC_PROVIDERS" \
com.google.android.wearable.healthservices

        2)支持的指标:

    •         心率

    •         每分钟步数

    •         GPS 位置(使用单一默认路线)

    •         活动时长

    •         海拔和楼层

    •         睡眠状态(睡眠/清醒)

        

        3)开启默认的锻炼

$ adb shell am broadcast \
-a "whs.synthetic.user.START_WALKING" \
com.google.android.wearable.healthservices

        提供如下默认的方式:

    •         Walking: whs.synthetic.user.START_WALKING

    •         Running: whs.synthetic.user.START_RUNNING

    •         Hiking: whs.synthetic.user.START_HIKING

    •         Swimming: whs.synthetic.user.START_SWIMMING

    •         Running on treadmill: whs.synthetic.user.START_RUNNING_TREADMILL        

   如上举例,表示开启模拟用户散步,平均速度: 每秒1.4米,心率:每分钟 120 次,位置:启用。

运动表格.png

        

        4)停止锻炼

         

        $ adb shell am broadcast \

        -a "whs.synthetic.user.STOP_EXERCISE" \

        com.google.android.wearable.healthservices

        

        5)自定义锻炼

        如果需要更精确控制生成的指标,请使用操作字符串 whs.synthetic.user.START_EXERCISE 并提供以下标志的任意组合来启动自定义的锻炼:

         

        $ adb shell am broadcast \

        -a "whs.synthetic.user.START_EXERCISE" \

        --ei exercise_options_heart_rate 90 \

        --ef exercise_options_average_speed 1.2 \

        --ez exercise_options_use_location true \

        com.google.android.wearable.healthservices

        

        6)控制睡眠状态

        可以模拟用户的睡眠状态。 目前,只支持两种状态:睡眠和清醒。 要在两者之间切换,请使用以下命令。

        $ adb shell am broadcast \

        -a "whs.synthetic.user.START_SLEEPING" \

        com.google.android.wearable.healthservices

        

        $ adb shell am broadcast \

        -a "whs.synthetic.user.STOP_SLEEPING" \

        com.google.android.wearable.healthservices


    3. 参考文档

    Wear 3 emulator: 

    https://androidstudio.googleblog.com/2021/05/android-studio-arctic-fox-beta-1.html

    Google官网: 

    https://developer.android.google.cn/training/wearables/health-services

    https://developer.android.google.cn/training/wearables/health-services/passive

    https://developer.android.google.cn/training/wearables/health-services/active

    Release notes: 

    https://developer.android.google.cn/jetpack/androidx/releases/health#health-services-client-1.0.0-alpha01

    https://developer.android.google.cn/reference/kotlin/androidx/health/services/client/package-summary

    参考Demo:

    https://github.com/androidx/androidx/tree/androidx-main/health/health-services-client/src/main/java/androidx/health/services/client

    https://github.com/android/health-samples/

    

    4. 联系我们

    如果您在适配过程中遇到了技术问题,对Wear Health Services适配有任何建议或意见:

    欢迎发邮件到:rdtpservice@samsung.com

    邮件主题:Wear Health Services适配+APP名