一年之计在于春,万物复苏中咱们迎来了健身的好时节。作为程序员,经常久坐或伏案,这带来了腰肌劳损、颈椎酸痛等亚健康情况,为此你是否开始制订静止 flag?同时心愿时刻检测本人的衰弱指标呢?
不如来体验一下 HMS Core AR Engine 服务提供的人体和人脸跟踪能力(目前仅反对人脸跟踪)吧!它通过整合 AR 外围算法,能够在你静止过程中实时监测心率、呼吸率、面部衰弱状态、心率波形图信号等衰弱信息。除了自我衰弱,开发者们还能够将其集成到不同行业的利用中,比方健身房实时查看人员静止状态;在医院,对病人进行实时查体;在护理行业,实时监测老年人、残障人士的各项指标等,为利用提供全新的视觉体验和交互方式。
一、人脸跟踪能力的长处及机型要求
- 实时计算人脸衰弱信息以及人体要害衰弱信息,包含心率、呼吸率、面部衰弱状态、心率波形图信号等。
- 让终端设备具备对人的理解能力。通过 SLAM、三维重建等技术来实现对人脸在事实世界中的三维感知,最终以图像渲染的形式在手机利用端出现 AR 的虚实交融成果。
- 机型具体反对的状况参考管网阐明 软硬件依赖表
二、Demo 利用介绍
为了让开发者更好的理解 HMS Core AR Engine 服务提供的人体和人脸跟踪能力,这里提供了一个简略的集成案例,教你用疾速高效的形式、简略的代码实现 demo 的运行。
- ENABLE_HEALTH_DEVICE 启用衰弱检测,1 << 6。
- HealthParameter 衰弱检测参数(心率;呼吸率;人脸属性:年龄,比重;心率波形图信号等)
- FaceDetectMode 人脸检测模式(包含健康检查心率;健康检查呼吸率;衰弱实时检测;同时启用心率、呼吸率和实时监测模式)
页面效果图:
上面为您介绍如何依据源代码将这个 Demo 运行起来,以便于理解实现细节。
三、关键步骤阐明
1. 在我的项目级 gradle 里增加华为 maven 仓。
buildscript {
repositories {maven { url 'http://developer.huawei.com/repo/'}
}
dependencies {
...
// 减少 agcp 配置。classpath 'com.huawei.agconnect:agcp:1.4.2.300'
}
}allprojects {
repositories {maven { url 'http://developer.huawei.com/repo/'}
}
}
2. 在利用级的 build.gradle 外面加上 SDK 依赖。
implementation 'com.huawei.hms:arenginesdk:3.7.0.3'
3. 在 AndroidManifest.xml 文件外面申明零碎权限。
:<uses-permission android:name="android.permission.CAMERA" />
4. 查看以后设施是否装置了 AR Engine,若曾经装置则失常运行,若没有装置,App 应被动跳转利用市场,申请装置 AR Engine。
boolean isInstallArEngineApk = AREnginesApk.isAREngineApkReady(this);
if (!isInstallArEngineApk && isRemindInstall) {Toast.makeText(this, "Please agree to install.", Toast.LENGTH_LONG).show();
finish();}
if (!isInstallArEngineApk) {startActivity(new Intent(this, ConnectAppMarketActivity.class));
isRemindInstall = true;
}
return AREnginesApk.isAREngineApkReady(this);
四、要害代码阐明
1. 调用 ARFaceTrackingConfig 接口,创建人脸跟踪 ARSession 场景,设置人脸检测模式,配置静止跟踪 AR 场景参数、启动静止跟踪。
mArSession = new ARSession(this);
mArFaceTrackingConfig = new ARFaceTrackingConfig(mArSession);
mArFaceTrackingConfig.setEnableItem(ARConfigBase.ENABLE_HEALTH_DEVICE);
mArFaceTrackingConfig
.setFaceDetectMode(ARConfigBase.FaceDetectMode.HEALTH_ENABLE_DEFAULT.getEnumValue());
2. 调用 FaceHealthServiceListener 衰弱检测事件监听接口,增加监听利用传递衰弱检测状态和进度等信息。在 handleProcessProgressEvent() 中回调衰弱检测进度。
mArSession.addServiceListener(new FaceHealthServiceListener() {
@Override
public void handleEvent(EventObject eventObject) {if (!(eventObject instanceof FaceHealthCheckStateEvent)) {return;}
final FaceHealthCheckState faceHealthCheckState =
((FaceHealthCheckStateEvent) eventObject).getFaceHealthCheckState();
runOnUiThread(new Runnable() {
@Override
public void run() {mHealthCheckStatusTextView.setText(faceHealthCheckState.toString());
}
});
}
@Override
public void handleProcessProgressEvent(final int progress) {mHealthRenderManager.setHealthCheckProgress(progress);
runOnUiThread(new Runnable() {
@Override
public void run() {setProgressTips(progress);
}
});
}
});
private void setProgressTips(int progress) {
String progressTips = "processing";
if (progress >= MAX_PROGRESS) {progressTips = "finish";}
mProgressTips.setText(progressTips);
mHealthProgressBar.setProgress(progress);
}
实时更新页面数据,展现以后检测后果:
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {mHealthParamTable.removeAllViews();
TableRow heatRateTableRow = initTableRow(ARFace.HealthParameter.PARAMETER_HEART_RATE.toString(),
healthParams.getOrDefault(ARFace.HealthParameter.PARAMETER_HEART_RATE, 0.0f).toString());
mHealthParamTable.addView(heatRateTableRow);
TableRow breathRateTableRow = initTableRow(ARFace.HealthParameter.PARAMETER_BREATH_RATE.toString(),
healthParams.getOrDefault(ARFace.HealthParameter.PARAMETER_BREATH_RATE, 0.0f).toString());
mHealthParamTable.addView(breathRateTableRow);
}
});
欲了解更多 HMS Core AR Engine 服务详情
理解更多详情 >>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~