이전 ARCore Cloud Anchor API는 지원 중단되었으며 2023년 8월 31일 이후에는 지원되지 않습니다. 앱에서 이 API를 사용하는 경우 최대한 빨리 새로운 ARCore API 엔드포인트를 사용하도록 업데이트해야 합니다.

Android용 Cloud Anchors 빠른 시작

cloud_anchor_javapersistent_cloud_anchor_java 샘플 앱에서 클라우드 앵커를 호스팅하고 확인해보세요.

어떤 샘플 앱을 사용해야 할까요?

클라우드 앵커는 ARCore Cloud Anchor API 또는 ARCore 클라우드 앵커 서비스에서 호스팅되는 앵커입니다. 이 API를 사용하면 사용자가 동일한 앱에서 환경을 공유할 수 있습니다. 영구 클라우드 앵커는 24시간 이상 호스팅할 수 있는 클라우드 앵커입니다.

  • persistent_cloud_anchor_java은(는) 공동작업 프로젝트 사용 사례의 구현입니다. 키 없는 승인을 사용하여 ARCore Cloud Anchor API를 사용 설정합니다. Firebase 백엔드를 사용하여 기기 간에 클라우드 앵커 ID를 공유하지 않으므로 쉽게 시작하고 실행할 수 있습니다.
  • cloud_anchor_java은 멀티 플레이어 사용 사례의 구현입니다. API 키를 사용하여 ARCore Cloud Anchor API 호출을 승인합니다.

기본 요건

요구사양

하드웨어

소프트웨어

  • Android SDK 플랫폼 버전 7.0 (API 수준 24) 이상을 사용하는 Android 스튜디오 버전 3.0 이상
  • Android용 ARCore SDK는 다음 두 가지 방법 중 하나로 사용할 수 있습니다.
    • GitHub에서 다운로드하여 머신에서 추출합니다.
    • 다음 명령어를 사용하여 저장소를 클론합니다.
      git clone https://github.com/google-ar/arcore-android-sdk.git

Android 스튜디오에서 샘플 앱 열기

ARCore SDK는 클라우드 앵커 기능을 보여주는 cloud_anchor_javapersistent_cloud_anchor_java 샘플 앱을 제공합니다. 다음 단계에 따라 Android 스튜디오에서 앱을 엽니다.

영구 클라우드 앵커

  1. Android 스튜디오에서 열기를 클릭합니다.

  2. 머신에 arcore-android-sdk 디렉터리가 저장되는 위치로 이동합니다. 전체 SDK 폴더를 열지 마세요. 대신 samples > Persistent_cloud_anchor_java로 이동하여 Open을 클릭합니다.

클라우드 앵커

  1. Android 스튜디오에서 열기를 클릭합니다.

  2. 머신에 arcore-android-sdk 디렉터리가 저장되는 위치로 이동합니다. 전체 SDK 폴더를 열지 마세요. 대신 samples > cloud_anchor_java로 이동하여 Open을 클릭합니다.

클라우드 앵커 ID 공유 설정

클라우드 앵커 ID는 호스팅된 클라우드 앵커를 식별하는 문자열입니다. 호스팅된 앵커에 연결된 3D 객체를 해결하거나 렌더링하는 데 사용됩니다.

영구 클라우드 앵커

클라우드 앵커 ID 공유는 앱에서 로컬로 유지됩니다. 여기에서는 별도의 작업을 할 필요가 없습니다.

클라우드 앵커

cloud_anchor_java 샘플 앱은 Firebase의 실시간 데이터베이스를 사용하여 기기 간에 클라우드 앵커 ID를 공유합니다. 자체 앱에서 다른 솔루션을 사용할 수 있습니다.

  1. 앱에 Firebase를 수동으로 추가합니다. cloud_anchor_java 패키지 이름은 com.google.ar.core.examples.java.cloudanchor입니다. main/AndroidManifest.xml에서 확인할 수 있습니다.
  2. 앱에 Firebase를 추가할 때 생성한 google-services.json 파일을 다운로드합니다.
  3. Firebase로 실시간 데이터베이스 만들기
  4. Android 스튜디오에서 프로젝트의 app 디렉터리에 google-services.json 파일을 추가합니다.

ARCore Cloud Anchor API 호출 승인

ARCore Cloud Anchor API가 앱의 클라우드 앵커를 호스팅하고 확인하도록 승인합니다.

영구 클라우드 앵커

persistent_cloud_anchor_java에서 ARCore Cloud Anchor API로 키 없는 승인을 사용하여 TTL이 24시간보다 긴 클라우드 앵커를 만듭니다.

  1. 신규 또는 기존 Google Cloud Platform 프로젝트에 ARCore ARCore Cloud Anchor API를 사용 설정합니다.
  2. Google Cloud Console에서 앱의 애플리케이션 ID 및 서명 인증서 SHA-1 디지털 지문을 사용하여 Android 앱의 OAuth 클라이언트 ID를 만듭니다. 그러면 Android 앱이 Google Cloud Platform 프로젝트와 연결됩니다.

    디버그 서명 인증서 디지털 지문을 가져오는 방법은 다음과 같습니다.

    • Android 스튜디오 프로젝트에서 Gradle 도구창을 엽니다.
    • Persistent_cloud_anchor_java > Tasks > android로 이동합니다.
    • signingReport 태스크를 실행합니다.

    • debug 대안의 SHA-1 디지털 지문을 Google Cloud Console의 SHA-1 인증서 디지털 지문 필드에 복사합니다.

클라우드 앵커

cloud_anchor_java의 API 키로 ARCore Cloud Anchor API를 승인하여 최대 24시간의 TTL로 클라우드 앵커를 호스팅하고 확인합니다.

  1. 신규 또는 기존 Google Cloud Platform 프로젝트에 ARCore ARCore Cloud Anchor API를 사용 설정합니다.
  2. Google Cloud Console에서 이 프로젝트의 API 키를 가져옵니다.
  3. Android 스튜디오에서 cloud_anchor_java 프로젝트에 새 API 키를 추가합니다.

    • 앱의 app/manifests/AndroidManifest.xml에 있는 <application> 요소의 <meta-data> 요소에 API 키를 포함합니다.
    <meta-data
       android:name="com.google.android.ar.API_KEY"
       android:value="API_KEY"/>
    

샘플 앱 빌드 및 실행

영구 클라우드 앵커

앱 실행

  1. 기기에서 개발자 옵션 및 USB 디버깅이 사용 설정되어 있는지 확인합니다.
  2. USB를 통해 기기를 개발 머신에 연결합니다.
  3. Android 스튜디오에서 기기를 배포 대상으로 선택하고 Run을 클릭합니다.

persistent_cloud_anchor_java가 기기에서 실행되어 ARCore에서 기기의 카메라 앞에 있는 비행기를 감지하도록 요청합니다.

오류: ERROR_NOT_AUTHORIZED

이 오류가 발생하면 앱의 OAuth 클라이언트 ID가 제대로 지정되었는지 확인합니다.


앵커 배치

  1. 앱이 평면을 감지하기 시작하면 화면을 탭하여 감지된 평면 중 하나에 앵커를 배치합니다.
  2. 호스트 버튼을 탭하여 배치된 앵커를 호스팅합니다. Google Cloud Anchor API로 호스트 요청을 전송합니다. 호스트 주변에는 시각적 요소를 기준으로 앵커의 위치를 나타내는 데이터가 포함됩니다.

호스트 요청에 성공하면 배치 위치에 앵커를 설정하고 클라우드 앵커 ID를 할당합니다. 호스트 요청이 성공하면 앱에 회의실 코드가 표시됩니다. 이 코드를 사용하면 모든 기기에서 이 방의 이전에 호스팅된 앵커에 액세스할 수 있습니다.

앵커 확인

  1. 확인을 탭하고 이전에 반환된 채팅방 코드를 입력하여 이 채팅방에 호스팅된 앵커에 액세스합니다. 그러면 ARCore Cloud Anchor API로 확인 요청이 전송되고 이 API는 현재 방에서 호스팅되는 모든 앵커의 ID를 반환합니다. persistent_cloud_anchor_java에서는 이러한 ID를 사용하여 호스팅된 앵커에 연결된 3D 객체를 렌더링합니다.

클라우드 앵커

앱 실행

  1. 기기에서 개발자 옵션 및 USB 디버깅이 사용 설정되어 있는지 확인합니다.
  2. USB를 통해 기기를 개발 머신에 연결합니다.
  3. Android 스튜디오에서 기기를 배포 대상으로 선택하고 Run을 클릭합니다.

cloud_anchor_java가 기기에서 실행되어 ARCore에서 기기의 카메라 앞에 있는 비행기를 감지하도록 요청합니다.

오류: com.google.firebase.database.DatabaseException: Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance

이 오류가 발생하면 firebase_url 속성이 google-services.json에 있는지 확인하세요. 실시간 데이터베이스가 생성되었는지 확인하고 google-services.json를 다운로드하여 이 속성의 올바른 값을 가져올 수 있습니다.


앵커 배치

  1. 앱이 평면을 감지하기 시작하면 화면을 탭하여 감지된 평면 중 하나에 앵커를 배치합니다.
  2. 호스트 버튼을 탭하여 배치된 앵커를 호스팅합니다. Google Cloud Anchor API로 호스트 요청을 전송합니다. 호스트 주변에는 시각적 요소를 기준으로 앵커의 위치를 나타내는 데이터가 포함됩니다.

호스트 요청에 성공하면 배치 위치에 앵커를 설정하고 클라우드 앵커 ID를 할당합니다. 호스트 요청이 성공하면 앱에 회의실 코드가 표시됩니다. 이 코드를 사용하면 모든 기기에서 이 방의 이전에 호스팅된 앵커에 액세스할 수 있습니다.

앵커 확인

  1. 확인을 탭하고 이전에 반환된 채팅방 코드를 입력하여 이 채팅방에 호스팅된 앵커에 액세스합니다. 그러면 ARCore Cloud Anchor API로 확인 요청이 전송되고 이 API는 현재 방에서 호스팅되는 모든 앵커의 ID를 반환합니다. cloud_anchor_java에서는 이러한 ID를 사용하여 호스팅된 앵커에 연결된 3D 객체를 렌더링합니다.

다음 단계