春天健身正當時,送你一份人體健康檢測指南

HMSCore發表於2022-03-17

一年之計在於春,萬物復甦中我們迎來了健身的好時節。作為程式設計師,常常久坐或伏案,這帶來了腰肌勞損、頸椎痠痛等亞健康狀況,為此你是否開始制定運動flag?同時希望時刻檢測自己的健康指標呢?

不如來體驗一下HMS Core AR Engine 服務提供的人體和人臉跟蹤能力(目前僅支援人臉跟蹤)吧!它通過整合AR核心演算法,可以在你運動過程中實時監測心率、呼吸率、面部健康狀態、心率波形圖訊號等健康資訊。除了自我健康,開發者們還可以將其整合到不同行業的應用中,比如健身房實時檢視人員運動狀態;在醫院,對病人進行實時查體;在護理行業,實時監測老年人、殘障人士的各項指標等,為應用提供全新的視覺體驗和互動方式。

一、 人臉跟蹤能力的優點及機型要求

  1. 實時計算人臉健康資訊以及人體關鍵健康資訊,包括心率、呼吸率、面部健康狀態、心率波形圖訊號等。
  2. 讓終端裝置具備對人的理解能力。通過SLAM、三維重建等技術來實現對人臉在現實世界中的三維感知,最終以影像渲染的方式在手機應用端呈現AR的虛實融合效果。
  3. 機型具體支援的情況參考管網說明 軟硬體依賴表

二、 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 服務詳情

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~

相關文章