华为运动健康服务(HUAWEI Health Kit)是华为提供的运动健康数据开放服务, 构建的是一个开放的运动健康生态数据平台(后面统称生态数据平台)。
生态数据平台作为用户运动健康数据的管理者,遵循华为网络安全与用户隐私保护规范,确保用户数据安全,完整,准确。
开发者通过集成华为运动健康服务,接入华为生态数据平台。
生态数据平台提供给开发者写入用户运动健康数据的接口,开发者通过调用写入数据的接口将用户的运动健康数据导入到生态数据平台。同时生态数据平台提供了丰富的数据查询接口,开发者通过调用查询接口可以跨平台、跨应用获取到用户导入的运动健康数据。
生态数据平台只对用户授权导入的运动健康数据进行管理,并提供丰富的跨平台、跨应用查询接口。
开发者通过在APP中集成HUAWEI Health SDK调用HUAWEI Health Kit接口向生态数据平台写入用户的运动健康数据。
为此,开发者需要:
本codelab提供了一个三方应用基础开发样例,开发者只需要完成相应的代码片段补充,就可以实现实时计步的功能开发。该功能会在UI界面上呈现出实时计步曲线、步频、总步数以及卡路里信息。
集成HUAWEI HMS Core能力,需要完成以下准备工作:
具体操作,请按照《HUAWEI HMS Core集成准备》中详细说明来完成。
在集成HUAWEI HMS Core能力后,还需要申请 Health Kit 服务,具体需要完成以下准备工作:
具体操作,请按照《申请 Health Kit 服务》中详细说明来完成。
Android Studio开发环境,建议版本v3.3.2及以上。
maven {url 'https://developer.huawei.com/repo/'}
maven {url 'https://developer.huawei.com/repo/'}
implementation 'com.huawei.hms:hihealth-base:{version}'
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="APP ID"/>
signingConfigs {
debug {
storeFile file('health_keystore/happysport.jks')
keyAlias '***'
storePassword '***'
keyPassword '***'
}
release {
storeFile file('health_keystore/happysport.jks')
keyAlias '***'
storePassword '***'
keyPassword '***'
}
}
整个代码工程以及资源结构如下图:
List<Scope> list = new ArrayList<>();
list.add(HuaweiIdAuthAPIManager.HUAWEIID_BASE_SCOPE);
HuaweiIdAuthParamsHelper authParamsHelper = new HuaweiIdAuthParamsHelper();
HuaweiIdAuthParams authParams = authParamsHelper.setIdToken().setScopeList(list).createParams();
nHuaweiIdAuthService = HuaweiIdAuthManager.getService(activity.getApplicationContext(), authParams);
mAccount = HuaweiIdAuthManager.getAuthResult();
if (mAccount == null) {
Intent signInIntent = nHuaweiIdAuthService.getSignInIntent();
activity.startActivityForResult(signInIntent, REQUEST_CODE_LOGIN);
}
if (mAccount != null) {
viewModel.onConnect();
}
String[] maxScopes = Scopes.getMaxScopes();
Scope[] allRequiredScopes = new Scope[maxScopes.length];
for (int i = 0; i < allRequiredScopes.length; i++) {
allRequiredScopes[i] = new Scope(maxScopes[i]);
}
List<Scope> scopeList = new ArrayList<>();
Collections.addAll(scopeList, allRequiredScopes);
HuaweiIdAuthManager.addAuthScopes(mActivity, REQUEST_CODE_PERMISSION, scopeList);
HiHealthOptions options = HiHealthOptions.builder().build();
AuthHuaweiId hwId = HuaweiIdAuthManager.getExtendedAuthResult(options);
mSensorsController = HuaweiHiHealth.getSensorsController(mContext, hwId);
DataCollector dataCollector = new DataCollector.Builder()
.setDataType(DataType.DT_CONTINUOUS_STEPS_TOTAL)
.setDataGenerateType(DataCollector.DATA_TYPE_RAW)
.setPackageName(this.mContext)
.setDeviceInfo(new DeviceInfo("hw", "hw", "hw", 0))
.build();
mSensorsController.register(new SensorOptions.Builder()
.setDataType(DataType.DT_CONTINUOUS_STEPS_TOTAL)
.setDataCollector(dataCollector)
.build(), mListener);
//private OnSamplePointListener mListener = null;
private OnSamplePointListener mListener = new OnSamplePointListener() {
@Override
public void onSamplePoint(SamplePoint samplePoint) {
Log.d(TAG, "on sample point received");
processSamplePoint(this, samplePoint);
}
};
mSensorsController.unregister(mListener);
注意:权限选择项默认不勾选,用户根据所需场景自主选择权限。
干得好!至此你已经成功完成了本codelab的预定目标,并学到了:
您可以阅读下面链接,了解更多相关的信息。
相关文档
您可以点击下方按钮下载源码。