HUAWEI Research开放研究APP框架,提供极简接入、智能终端数据采集、大数据分析、闭环干预等一站式服务,帮助合作伙伴提升研究效率,快速孵化创新应用和解决方案。
开发者通过在APP中集成Research Kit接入HUAWEI Research平台,为此,开发者需要:
在本次Codelab中,您只需要在下载参考工程后,根据本文档完成相应的代码片段补充,即可实现房颤主动测量的功能开发。该功能会在UI上呈现数据采集信号量检测结果、PPG实时波形、房颤测量图形化结果等。
集成HUAWEI Research Kit,需要完成以下准备工作:
具体操作,请按照《HUAWEI Research研究项目申请指导》中详细说明来完成。
开发环境
Android Studio开发环境, V4.0版本及以上
导入HUAWEI Research 依赖
implementation fileTree(dir: "libs", include: ["*.jar",'*.aar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.huawei.hms:hwid:4.0.4.300'
implementation('com.google.guava:guava:28.2-android')
{
exclude group: 'com.google.code.findbugs', module: 'jsr305'
}
implementation 'org.codehaus.mojo:animal-sniffer-annotations:1.17'
implementation 'com.google.errorprone:error_prone_annotations:2.3.3'
implementation 'com.squareup.okhttp3:okhttp:3.14.4'
implementation 'com.squareup.okio:okio:1.17.2'
implementation 'com.squareup.okhttp3:logging-interceptor:4.4.1'
implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
implementation ('io.reactivex.rxjava2:rxandroid:2.1.1') {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
}
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
implementation 'com.squareup.retrofit2:converter-gson:2.8.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
implementation 'com.squareup.retrofit2:retrofit-converters:2.5.0'
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'joda-time:joda-time:2.10.3'
testImplementation 'junit:junit:4.12'
implementation 'com.alibaba:fastjson:1.2.70'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.jakewharton:butterknife:10.2.2'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.2'
implementation 'pub.devrel:easypermissions:1.0.1'
implementation 'com.google.zxing:core:3.4.0'
implementation 'de.hdodenhof:circleimageview:2.0.0'
implementation 'pub.devrel:easypermissions:1.0.1'
implementation 'com.android.support:multidex:1.0.3'
implementation 'org.aspectj:aspectjrt:1.9.5'
implementation 'com.airbnb.android:lottie:2.7.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.jamesmurty.utils:java-xmlbuilder:1.1'
implementation 'com.fasterxml.jackson.core:jackson-core:2.10.0'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.0'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.10.0'
所有示例代码开发均在MainActivity.java
中完成,整个工程代码结构如下,:
在MainActivity.java
类onCreate
方法中添加如下代码片段:
HiResearchPermissionTask permissionActiveTask = new HiResearchPermissionTask(this);
permissionActiveTask.registerTaskListener(new HiResearchPermissionTaskListener() {
@Override
public void onPermissionsDenied() {
ActivityManager.getAppManager().exitApp();
}
});
HiResearchConsentTask consentActiveTask = new HiResearchConsentTask(this, disposable);
consentActiveTask.registerTaskListener(new HiResearchConsentTaskListener() {
@Override
public void onAgree() {
btnLogin.setEnabled(true);
}
@Override
public void onDisAgree() {
ActivityManager.getAppManager().exitApp();
}
});
permissionActiveTask.registerErrorListener(this);
permissionActiveTask.setNext(consentActiveTask);
permissionActiveTask.start();
在MainActivity.java
类onLoginClicked
方法中添加如下代码片段:
HiResearchLoginTask loginActiveTask = new HiResearchLoginTask(this, disposable);
loginActiveTask.registerErrorListener(this);
loginActiveTask.registerTaskListener(new HiResearchLoginTaskListener() {
@Override
public void onLoginSuccess(String projectCode, AuthHuaweiId authHuaweiId, UserSessionInfo hiResearchUserSessionInfo) {
btnJoin.setEnabled(true);
}
@Override
public void onLoginFailure(String projectCode, HttpMessageDataResponse message) {
toast("login failed:" + message.toString());
}
});
loginActiveTask.start();
在MainActivity.java
类onJoinClicked
方法中添加如下代码片段:
HiResearchJoinStudyTask joinStudyActiveTask = new HiResearchJoinStudyTask(this, disposable);
joinStudyActiveTask.registerErrorListener(this);
joinStudyActiveTask.registerTaskListener(new HiResearchJoinStudyTaskListener() {
@Override
public void onJoinSuccess(String projectCode, JoinInfo data) {
btnDevice.setEnabled(true);
}
@Override
public void onJoinFailure(String projectCode, HttpMessageDataResponse message) {
toast("join study failed:" + message.toString());
}
});
joinStudyActiveTask.start();
在MainActivity.java
类onDeviceClicked
方法中添加如下代码片段:
HiResearchConnectDeviceTask deviceActiveTask = new HiResearchConnectDeviceTask(this, disposable);
deviceActiveTask.registerErrorListener(this);
deviceActiveTask.registerTaskListener(new HiResearchDeviceTaskListener() {
@Override
public void onDeviceStatusChanged(SensorProDeviceInfo deviceInfo) {
if (deviceInfo.getDeviceConnectState() == 2) {
btnMeasure.setEnabled(true);
}
}
});
deviceActiveTask.start();
MainActivity
类onMeasureClicked
方法中添加如下代码片段:HiResearchAtrialTask atrialActiveTask = new HiResearchAtrialTask(this, disposable);
atrialActiveTask.registerErrorListener(this);
atrialActiveTask.registerTaskListener(this);
atrialActiveTask.start();
MainActivity.java
类onAtrialMeasureResult
方法中添加如下代码片段:String userNo = "您的用户编号";
AtrialFibrillationMeasureResultMetadata measureResultMetadata = new AtrialFibrillationMeasureResultMetadata(userNo, atrialMeasureResult);
BridgeDataProvider bridgeDataProvider = BridgeManager2.getFirstInstance().getBridgeDataProvider();
disposable.add(
bridgeDataProvider
.upload(measureResultMetadata, null)
.subscribe(resp -> {
if (resp.getSuccess()) {
toast("The result was uploaded successfully!");
} else {
toast("Result upload failed:" + resp.toString());
}
}, err -> {
toast("Result upload failed:" + err.toString());
}));
祝贺您,您已经成功地开发和运行您的第一个HUAWEI Research研究项目,您已经成功学会了:
您可以阅读下面链接,了解更多相关的信息。
相关文档
您可以点击下方按钮下载源码。