一年之計在于春,萬物復蘇中我們迎來了健身的好時節,作為程式員,常常久坐或伏案,這帶來了腰肌勞損、頸椎酸痛等亞健康狀況,為此你是否開始制定運動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 最新技術資訊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/445554.html
標籤:其他
下一篇:多執行緒筆記
