AR 기반 건강 체크 앱 개발 방법

이제 봄이 왔으니 밖으로 나가 다리를 쭉 뻗을 시간입니다! 프로그래머로서 우리 중 많은 사람들은 허리 통증과 통증을 유발할 수 있는 몇 시간 동안 앉아 있는 데 익숙합니다. 우리 모두는 운동 계획을 세우고 건강 지표를 24시간 추적하면 몸, 마음, 영혼에 엄청난 이점이 있다는 것을 알고 있습니다.

다행스럽게도 AR 엔진은 이를 매우 쉽게 해줍니다. 얼굴 추적 기능이 제공되며 곧 신체 추적도 지원할 예정입니다. 핵심 AR 알고리즘 덕분에 AR Engine은 운동 중 심박수, 호흡수, 얼굴 건강 상태 및 심박수 파형 신호를 실시간으로 모니터링할 수 있습니다. 예를 들어 실시간 운동 상태를 추적하거나 환자의 실시간 건강 검진을 수행하거나 노인이나 장애인과 같은 취약한 사용자의 실시간 건강 지표를 모니터링하는 등의 앱을 구축하는 데 사용할 수도 있습니다. AR 엔진을 사용하면 건강 또는 피트니스 앱을 가능하다고 생각했던 것보다 더 매력적이고 시각적으로 몰입하게 만들 수 있습니다.

장점 및 장치 모델 제한


  • 심박수, 호흡수, 안면 건강 상태 및 심박수 파형 신호와 같은 핵심 건강 지표를 실시간으로 모니터링합니다.
  • 장치가 사용자를 더 잘 이해할 수 있도록 합니다. SLAM(Simultaneous Localization and Mapping) 및 3D 재구성과 같은 기술 덕분에 AR 엔진은 이미지를 렌더링하여 휴대폰에 3D 사람의 얼굴을 구축하여 완벽한 가상-물리적 결합을 만듭니다.
  • AR 엔진 기능의 소프트웨어 및 하드웨어 요구 사항에 나열된 모든 장치 모델을 지원합니다.

  • 데모 소개



    간단한 데모를 통해 AR 엔진을 통합하고 인체 및 얼굴 추적 기능을 사용하는 방법을 파악할 수 있습니다.

  • ENABLE_HEALTH_DEVICE: 헬스 체크 활성화 여부를 나타냅니다.

  • HealthParameter: 심박수, 호흡수, 얼굴 특징을 기반으로 한 연령 및 성별 확률 및 심박수 파형 신호를 포함하는 건강 검진 매개변수입니다.

  • FaceDetectMode: 건강 상태 확인, 호흡 수 확인, 실시간 건강 확인 및 위의 세 가지 모두를 포함하는 얼굴 감지 모드입니다.

  • 효과




    다음은 소스 코드를 사용하여 데모를 실행하는 방법을 자세히 설명합니다.

    주요 단계



    1. Huawei Maven 리포지토리를 프로젝트 수준 build.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. 앱 수준 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이 설치되어 있는지 확인합니다. 그렇다면 앱이 제대로 실행될 수 있습니다. 그렇지 않은 경우 앱은 자동으로 사용자를 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());
    


    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);
        }
    });
    


    참조



    AR 엔진 official website
    AR 엔진 Development Guide
    Reddit 개발자 토론에 참여하려면
    GitHub 샘플 코드를 다운로드하려면
    Stack Overflow 통합 문제를 해결하기 위해

    좋은 웹페이지 즐겨찾기