随着人们生活水平的提高,人们对健康越来越重视。用户在使用一些健康APP时,不仅希望了解身高、体重等基本信息,还希望了解一些日常的心率、血氧等数据,以便随时关注自己的健康状况。这时候APP需要每天关注健康数据并记录下来,比如每天的饮食、睡眠习惯、心率、血压血糖变化、运动数据等,并建立个人健康档案查看一周或一个月等一段时间内健康数据的变化趋势,第一时间关注异常数据,以便及时就医或调整生活习惯。因此,用户可以更好地控制自己的健康状况,医生可以更准确地诊断。那么对于健康APP来说,如何实现以上功能呢?华为运动健康服务(HealthKit)为开发者开放基础能力。通过集成HealthKit的基础能力,可以快速构建App的基础功能,如读取、插入、删除、更新一天或多天的健康记录,为用户带来优质的体验。开发者APP通过接入HealthKit基础能力服务,在用户授权后,可以获取用户在华为运动健康APP上的云端健康数据,并在APP上展示给用户。效果示例本demo是在运动健康服务基础能力服务示例代码的基础上修改而成。有兴趣的开发者可以自行下载体验优化。注册账号和申请账号服务的开发和准备:由于HealthKit服务需要具备使用账号服务的能力,所以您在申请HealthKit服务前必须先申请华为帐号服务。申请HealthKit服务:申请产品所需的数据读写权限。在DevelopmentServices中查找并申请HealthKit服务。查看产品需要申请的数据权限。我们这里需要申请的身高体重是不受限制的数据。提交申请后,将很快获得批准。心率、血压、血糖、血氧饱和度是受限数据,需要人工审核。.集成HMSCoreSDK:开发应用前,需要在开发环境中集成扩展HealthKit服务能力的SDK。使用AndroidStudio打开项目,找到并打开项目根路径下的build.gradle文件。在“allprojects>repositories”和“buildscript>repositories”中添加SDK的maven仓库地址。maven{url'https://developer.huawei.com/repo/'}打开app下的应用级build.gradle文件,在dependencies中添加如下编译依赖。implementation'com.huawei.hms:health:{version}'重新打开修改后的build.gradle文件,右上角出现SyncNow链接。单击“立即同步”并等待同步完成。配置混淆脚本:在编译APK之前,需要配置混淆配置文件,以免混淆HMSCoreSDK导致功能异常。打开应用级根目录下的混淆配置文件“proguard-rules.pro”,添加排除HMSCoreSDK的混淆配置脚本。-ignorewarnings-keeattributes*Annotation*-keeattributesExceptions-keeattributesInnerClasses-keeattributesSignature-keeattributesSourceFile,LineNumberTable-keepclasscom.huawei.hianalytics.**{*;}-keepclasscom.huawei.updatesdk.**{*;}-keepclasscom.huawei.hms.**{*;}导入证书指纹,修改包名,配置编译后的JDK版本:生成Keystore文件导入到应用中,按照“创建应用”密钥库文件”指南,打开应用级的“build.gradle”文件,可以看到导入的结果。修改应用程序包名称。申请包名需与“账户申请服务”填写的包名一致。打开App下应用级根目录下的“build.gradle”文件,在“android”中添加一个compileOptions配置。配置格式如下:compileOptions{sourceCompatibility='1.8'targetCompatibility='1.8'}主要实现代码拉起登录页面登录授权。/***添加作用域申请和获取授权流程Intent。*/privatevoidrequestAuth(){//添加要申请的范围。以下仅显示示例。//开发者需要根据自己的具体需求添加scopes.String[]allScopes=Scopes.getAllScopes();//获取授权流程Intent。//True表示启用健康应用程序授权过程。False表示禁用。意图intent=mSettingController.requestAuthorizationIntent(allScopes,true);//显示授权流程页面。startActivityForResult(intent,REQUEST_AUTH);}调用com.huawei.hms.hihealth.DataController类的readLatestData()接口读取最新的健康相关数据。包括用户的身高、体重、心率、血压、血糖和血氧。/***根据数据类型读取最新的数据**@paramview(表示一个UI对象)*/publicvoidreadLatestData(Viewview){//1.使用指定的数据类型(DT_INSTANTANEOUS_HEIGHT)调用数据控制器查询//该数据类型的最新数据。List
