ARベースの健康チェックアプリを開発する方法


今春は、それを取得し、足を伸ばす時間です到着しました!プログラマとして、私たちの多くは時間と時間で座っているために使用され、それは背中の痛みや痛みにつながることができます.我々は、すべてのトレーニング計画を構築し、時計の周りの健康インジケータを追跡することは、身体、心、および魂のための巨大な利点を持つことができることに気づいている.
幸いにも、ARエンジンは非常に簡単になります.これは、顔の追跡機能が付属し、すぐに同様に体の追跡をサポートします.コアARアルゴリズムのおかげで、ARエンジンは、心拍数、呼吸率、顔の健康状態を監視することができますし、心拍数波形信号をリアルタイムであなたのトレーニング中.また、例えば、リアルタイムのワークアウト状態を追跡するために、アプリケーションを構築するために使用することができます患者のリアルタイムヘルスチェックを実行したり、高齢者や障害者のような脆弱なユーザーのリアルタイムの健康指標を監視する.ARエンジンを使用すると、あなたの健康やフィットネスのアプリをより魅力的で視覚的に没入することができますあなたは可能性を信じている可能性があります.

利点とデバイスモデルの制限​

  • は心拍数、呼吸率、顔の健康状態、心拍数波形のようなリアルタイムの健康指標をリアルタイムでモニターします.
  • は、デバイスがよりよく彼らのユーザーを理解するのを可能にします.同時ローカリゼーションとマッピング(SLAM)と3 D再構成のような技術のおかげで、ARエンジンは、シームレスな仮想物理的な結束の結果、携帯電話で3 D人間の顔を構築するために画像をレンダリングします.
  • は、ARエンジン機能のソフトウェアとハードウェア要件にリストされるすべての装置モデルを支持します.
  • デモ紹介​


    単純なデモをどのようにARエンジンを統合するための把握を与えるために利用可能であり、その人体と顔のトラッキング機能を使用します.

  • EnableRange HealthRankデバイス:ヘルスチェックを有効にするかどうかを示します.

  • HealthParameter:顔の特徴に基づいて心拍数、呼吸率、年齢、性別の確率を含む健康チェックパラメータ、および心拍数波形信号.

  • FaceDemotMode:顔検出モードは、健康率のチェック、呼吸率チェック、リアルタイムの健康チェック、および上記のすべての3を含む.
  • 効果​



    ソースコードを使用してデモを実行する方法を次の詳細に示します.

    キーステップス​


    1 . Huawei Mavenリポジトリをプロジェクトレベルのビルドに追加します.Gradleファイル.
    buildscript {
        repositories {
            maven { url 'http://developer.huawei.com/repo/'}
        }
    dependencies {
            ...
            // Add the AppGallery Connect plugin configuration.
            classpath 'com.huawei.agconnect:agcp:1.4.2.300'
        }
    }allprojects {
        repositories {
            maven { url 'http://developer.huawei.com/repo/'}
        }
    }
    
    2 . SDKの依存性をアプリケーションレベルのビルドに追加します.Gradleファイル.
    implementation 'com.huawei.hms:arenginesdk:3.7.0.3'
    
    3 . AndroidManifestのシステムパーミッションを宣言します.XMLファイル.
    <uses-permission android:name="android.permission.CAMERA" />
    
    4 . Arエンジンが現在のデバイスにインストールされているかどうかを確認します.yesの場合、アプリケーションが正しく実行することができます.されていない場合、アプリケーションは自動的にAppGalleryにARエンジンをインストールするユーザーをリダイレクトします.
    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());
    
    あなたのアプリケーションを追加し、健康チェックのステータスと進行状況を渡すには、Face HealthServiceListenerを呼び出します.Health Check Progress ()を呼び出して、ヘルスチェックの進行状況を取得します.
    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);
        }
    });
    

    参考文献​


    ARエンジン
    ARエンジン
    開発者議論に加わるofficial website
    サンプルコードをダウンロードするDevelopment Guide
    統合問題を解決するReddit