cloud_anchor_java
및 persistent_cloud_anchor_java
샘플 앱에서 클라우드 앵커를 호스팅하고 확인해 보세요.
어떤 샘플 앱을 사용해야 하나요?
클라우드 앵커는 ARCore API 클라우드 엔드포인트에서 호스팅되는 앵커입니다. 이 API를 사용하면 사용자는 동일한 앱에서 환경을 공유할 수 있습니다. 영구 클라우드 앵커는 24시간 이상 호스팅할 수 있는 클라우드 앵커입니다.
persistent_cloud_anchor_java
는 공동작업 프로젝트 사용 사례의 구현입니다. 키 없는 승인을 사용하여 ARCore API 호출을 승인합니다. 기기 간에 클라우드 앵커 ID를 공유하는 데 Firebase 백엔드를 사용하지 않으므로 훨씬 쉽게 시작하고 실행할 수 있습니다.cloud_anchor_java
는 멀티플레이어 사용 사례의 구현입니다. API 키를 사용하여 ARCore API 호출을 승인합니다.
기본 요건
요구사항
하드웨어
- 최신 버전의 Google Play AR 서비스가 설치된 ARCore 지원 기기
- 기기를 개발 머신에 연결하는 USB 케이블
소프트웨어
- 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_java
및 persistent_cloud_anchor_java
샘플 앱을 제공합니다. 다음 단계에 따라 Android 스튜디오에서 앱을 엽니다.
영구 클라우드 앵커
Android 스튜디오에서 Open을 클릭합니다.
시스템에서 arcore-android-sdk 디렉터리가 저장된 위치로 이동합니다. 전체 SDK 폴더를 열지 마세요. 대신 samples > persistent_cloud_anchor_java로 이동하여 Open을 클릭합니다.
클라우드 앵커
Android 스튜디오에서 Open을 클릭합니다.
시스템에서 arcore-android-sdk 디렉터리가 저장된 위치로 이동합니다. 전체 SDK 폴더를 열지 마세요. 대신 samples > cloud_anchor_java로 이동하여 Open을 클릭하세요.
클라우드 앵커 ID 공유 설정
클라우드 앵커 ID는 호스팅된 클라우드 앵커를 식별하는 문자열입니다. 앵커는 호스팅된 앵커에 첨부된 3D 객체를 결정하거나 렌더링하는 데 사용됩니다.
영구 클라우드 앵커
클라우드 앵커 ID 공유는 앱에서 로컬로 유지 관리되며 여기에서는 아무 작업도 수행할 필요가 없습니다.
클라우드 앵커
cloud_anchor_java
샘플 앱은 Firebase의 실시간 데이터베이스를 사용하여 기기 간에 클라우드 앵커 ID를 공유합니다. 자체 앱에서 다른 솔루션을 사용할 수 있습니다.
- 수동으로 앱에 Firebase를 추가합니다.
cloud_anchor_java
패키지 이름은com.google.ar.core.examples.java.cloudanchor
입니다.main/AndroidManifest.xml
에서 찾을 수 있습니다. - 앱에 Firebase를 추가할 때 생성한
google-services.json
파일을 다운로드합니다. - Firebase로 실시간 데이터베이스 만들기
- Android 스튜디오에서
google-services.json
파일을 프로젝트의app
디렉터리에 추가합니다.
ARCore API 호출 승인
ARCore API 호출을 승인하여 앱의 클라우드 앵커를 호스팅하고 확인합니다. Google Cloud에서 ARCore API 사용 단계를 따르고 영구 클라우드 앵커의 키 없는 승인 또는 클라우드 앵커의 API 키 승인을 사용합니다.
샘플 앱 빌드 및 실행
영구 클라우드 앵커
앱 실행
- 기기에서 개발자 옵션과 USB 디버깅이 사용 설정되어 있는지 확인합니다.
- USB를 통해 기기를 개발 머신에 연결합니다.
- Android 스튜디오에서 기기를 배포 대상으로 선택하고 Run을 클릭합니다.
persistent_cloud_anchor_java
가 기기에서 실행되고 ARCore에서 기기의 카메라 앞에 있는 비행기를 감지하도록 요청합니다.
Google Cloud 승인에 실패하면 문제 해결 단계를 참조하세요.
앵커 배치
- 앱에서 평면을 감지하기 시작하면 화면을 탭하여 감지된 평면 중 하나에 앵커를 배치합니다.
- 호스트 버튼을 탭하여 배치된 앵커를 호스팅합니다. 그러면 호스트 요청이 ARCore API로 전송되며, 이 API에는 앵커 근처의 시각적 지형지물을 기준으로 앵커의 위치를 나타내는 데이터가 포함됩니다.
호스트 요청이 성공하면 배치된 위치에 앵커를 설정하고 클라우드 앵커 ID를 할당합니다. 호스트 요청이 성공하면 앱에서 방 코드를 표시해야 합니다. 이 코드를 사용하여 어느 기기에서나 이 회의실에 대해 이전에 호스팅된 앵커에 액세스할 수 있습니다.
앵커 확인
- 확인을 탭하고 이전에 반환된 방 코드를 입력하여 이 회의실에서 호스팅되는 앵커에 액세스합니다. 그러면 ARCore API로 확인 요청이 전송되며, 이 API는 현재 방에서 호스팅되는 모든 앵커의 ID를 반환합니다.
persistent_cloud_anchor_java
는 이 ID를 사용하여 호스팅된 앵커에 연결된 3D 객체를 렌더링합니다.
클라우드 앵커
앱 실행
- 기기에서 개발자 옵션과 USB 디버깅이 사용 설정되어 있는지 확인합니다.
- USB를 통해 기기를 개발 머신에 연결합니다.
- Android 스튜디오에서 기기를 배포 대상으로 선택하고 Run을 클릭합니다.
cloud_anchor_java
가 기기에서 실행되고 ARCore에서 기기의 카메라 앞에 있는 비행기를 감지하도록 요청합니다.
오류: com.google.firebase.database.DatabaseException: Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance
이 오류가 발생하면 google-services.json
에 firebase_url
속성이 있는지 확인합니다. 실시간 데이터베이스가 생성되었는지 확인하고 google-services.json
를 다운로드하면 이 속성의 올바른 값을 가져올 수 있습니다.
앵커 배치
- 앱에서 평면을 감지하기 시작하면 화면을 탭하여 감지된 평면 중 하나에 앵커를 배치합니다.
- 호스트 버튼을 탭하여 배치된 앵커를 호스팅합니다. 그러면 호스트 요청이 ARCore API로 전송되며, 이 API에는 앵커 근처의 시각적 지형지물을 기준으로 앵커의 위치를 나타내는 데이터가 포함됩니다.
호스트 요청이 성공하면 배치된 위치에 앵커를 설정하고 클라우드 앵커 ID를 할당합니다. 호스트 요청이 성공하면 앱에서 방 코드를 표시해야 합니다. 이 코드를 사용하여 어느 기기에서나 이 회의실에 대해 이전에 호스팅된 앵커에 액세스할 수 있습니다.
앵커 확인
- 확인을 탭하고 이전에 반환된 방 코드를 입력하여 이 회의실에서 호스팅되는 앵커에 액세스합니다. 그러면 ARCore API로 확인 요청이 전송되며, 이 API는 현재 방에서 호스팅되는 모든 앵커의 ID를 반환합니다.
cloud_anchor_java
는 이 ID를 사용하여 호스팅된 앵커에 연결된 3D 객체를 렌더링합니다.
다음 단계
- 영구 클라우드 앵커가 포함된 ARCore 클라우드 앵커 Codelab으로 클라우드 앵커 앱을 만듭니다.
- 클라우드 앵커 개발자 가이드를 통해 앱에 클라우드 앵커를 통합하는 방법을 알아보세요.
- Cloud Anchors Management API를 사용하여 ARCore 앱 외부에서 클라우드 앵커를 관리합니다.