Hãy thử lưu trữ và phân giải Neo đám mây trong các ứng dụng mẫu cloud_anchor_java và persistent_cloud_anchor_java.
Bạn nên dùng ứng dụng mẫu nào?
Cloud Anchors là các điểm neo được lưu trữ trên điểm cuối đám mây ARCore API. API này cho phép người dùng chia sẻ trải nghiệm trong cùng một ứng dụng. Điểm neo đám mây cố định là những điểm neo đám mây có thể được lưu trữ trong hơn 24 giờ.
persistent_cloud_anchor_javalà một cách triển khai trường hợp sử dụng dự án cộng tác. Nó sử dụng phương thức uỷ quyền không cần khoá để uỷ quyền cho các lệnh gọi ARCore API. Vì không sử dụng một phần phụ trợ Firebase để chia sẻ mã nhận dạng Cloud Anchor giữa các thiết bị, nên việc thiết lập và chạy ứng dụng này sẽ dễ dàng hơn nhiều.cloud_anchor_javalà một cách triển khai trường hợp sử dụng nhiều người chơi. Ứng dụng này sử dụng khoá API để uỷ quyền các lệnh gọi API ARCore.
Điều kiện tiên quyết
- Tìm hiểu cách hoạt động của neo và Neo trên đám mây.
- Cài đặt và định cấu hình ARCore SDK cho Android.
Yêu cầu
Phần cứng
- Một thiết bị có hỗ trợ ARCore đã cài đặt phiên bản mới nhất của Dịch vụ Google Play cho Thực tế tăng cường
- Cáp USB để kết nối thiết bị với máy phát triển
Phần mềm
- Android Studio phiên bản 3.0 trở lên có Nền tảng SDK Android phiên bản 7.0 (API cấp 24) trở lên
- ARCore SDK cho Android, bạn có thể tải SDK này theo một trong hai cách sau:
- Tải xuống từ GitHub và giải nén trên máy của bạn
- Sao chép kho lưu trữ bằng lệnh sau:
git clone https://github.com/google-ar/arcore-android-sdk.git
Mở ứng dụng mẫu trong Android Studio
ARCore SDK cung cấp các ứng dụng mẫu cloud_anchor_java và persistent_cloud_anchor_java để minh hoạ chức năng của Cloud Anchors. Hãy làm theo các bước sau để mở các ứng dụng trong Android Studio.
Điểm neo đám mây cố định
Trong Android Studio, hãy nhấp vào Open (Mở).
Chuyển đến nơi lưu trữ thư mục arcore-android-sdk trên máy của bạn. Đừng mở toàn bộ thư mục SDK. Thay vào đó, hãy chuyển đến samples > persistent_cloud_anchor_java rồi nhấp vào Open (Mở).
Neo đám mây
Trong Android Studio, hãy nhấp vào Open (Mở).
Chuyển đến nơi lưu trữ thư mục arcore-android-sdk trên máy của bạn. Đừng mở toàn bộ thư mục SDK. Thay vào đó, hãy chuyển đến samples > cloud_anchor_java rồi nhấp vào Open (Mở).
Thiết lập tính năng chia sẻ mã nhận dạng neo trên đám mây
Mã nhận dạng Cloud Anchor là các chuỗi xác định Cloud Anchor được lưu trữ. Chúng được dùng để phân giải hoặc hiển thị các đối tượng 3D được đính kèm vào các neo được lưu trữ.
Điểm neo đám mây cố định
Tính năng chia sẻ mã nhận dạng neo trên đám mây được duy trì cục bộ trong ứng dụng. Bạn không cần làm gì cả.
Neo đám mây
Ứng dụng mẫu cloud_anchor_java sử dụng Cơ sở dữ liệu theo thời gian thực của Firebase để chia sẻ mã nhận dạng Neo đám mây giữa các thiết bị. Bạn có thể sử dụng một giải pháp khác trong các ứng dụng của riêng mình.
- Thêm Firebase vào ứng dụng của bạn theo cách thủ công. Tên gói
cloud_anchor_javalàcom.google.ar.core.examples.java.cloudanchor. Bạn có thể tìm thấy thành phần này trongmain/AndroidManifest.xml. - Tải tệp
google-services.jsonmà bạn đã tạo khi thêm Firebase vào ứng dụng của mình. - Tạo Cơ sở dữ liệu theo thời gian thực bằng Firebase.
- Trong Android Studio, hãy thêm tệp
google-services.jsonvào thư mụcappcủa dự án.
Cho phép lệnh gọi ARCore API
Uỷ quyền các lệnh gọi đến ARCore API để lưu trữ và phân giải Neo đám mây cho ứng dụng của bạn. Làm theo các bước trong phần Sử dụng ARCore API trên Google Cloud và sử dụng Uỷ quyền không cần khoá cho Neo đám mây liên tục hoặc Uỷ quyền bằng khoá API cho Neo đám mây.
Xây dựng và chạy ứng dụng mẫu
Điểm neo đám mây cố định
Chạy ứng dụng
- Đảm bảo rằng thiết bị của bạn đã bật tuỳ chọn cho nhà phát triển và gỡ lỗi qua USB.
- Kết nối thiết bị với máy phát triển qua USB.
- Trong Android Studio, hãy chọn thiết bị của bạn làm mục tiêu triển khai rồi nhấp vào Run (Chạy).
persistent_cloud_anchor_java sẽ khởi chạy trên thiết bị của bạn, nhắc ARCore phát hiện các mặt phẳng trước camera của thiết bị.
Nếu không uỷ quyền được cho Google Cloud, hãy xem Các bước khắc phục sự cố.
Đặt điểm neo
- Sau khi ứng dụng bắt đầu phát hiện các mặt phẳng, hãy nhấn vào màn hình để đặt một điểm neo trên một trong các mặt phẳng được phát hiện.
- Nhấn vào nút LƯU TRỮ để lưu trữ điểm neo đã đặt. Thao tác này sẽ gửi một yêu cầu lưu trữ đến ARCore API, bao gồm cả dữ liệu biểu thị vị trí của neo so với các đặc điểm trực quan ở gần đó.
Yêu cầu lưu trữ thành công sẽ thiết lập một neo tại vị trí được đặt và chỉ định cho neo đó một mã nhận dạng Neo trên đám mây. Nếu yêu cầu của người tổ chức thành công, ứng dụng sẽ hiển thị mã phòng. Bạn có thể dùng mã này để truy cập vào các neo được lưu trữ trước đó cho căn phòng này trên mọi thiết bị.
Giải quyết một điểm neo
- Nhấn vào RESOLVE rồi nhập mã phòng đã trả về trước đó để truy cập vào các neo được lưu trữ trong phòng này. Thao tác này sẽ gửi một yêu cầu phân giải đến ARCore API, yêu cầu này sẽ trả về mã nhận dạng của tất cả các neo hiện đang được lưu trữ trong phòng.
persistent_cloud_anchor_javasẽ dùng các mã nhận dạng này để hiển thị các đối tượng 3D được đính kèm vào các neo được lưu trữ.
Neo đám mây
Chạy ứng dụng
- Đảm bảo rằng thiết bị của bạn đã bật tuỳ chọn cho nhà phát triển và gỡ lỗi qua USB.
- Kết nối thiết bị với máy phát triển qua USB.
- Trong Android Studio, hãy chọn thiết bị của bạn làm mục tiêu triển khai rồi nhấp vào Run (Chạy).
cloud_anchor_java sẽ khởi chạy trên thiết bị của bạn, nhắc ARCore phát hiện các mặt phẳng trước camera của thiết bị.
Lỗi: com.google.firebase.database.DatabaseException: Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance
Nếu bạn gặp phải lỗi này, hãy đảm bảo rằng thuộc tính firebase_url có trong google-services.json. Bạn có thể lấy giá trị chính xác cho thuộc tính này bằng cách đảm bảo rằng Cơ sở dữ liệu theo thời gian thực đã được tạo và tải google-services.json xuống.
Đặt điểm neo
- Sau khi ứng dụng bắt đầu phát hiện các mặt phẳng, hãy nhấn vào màn hình để đặt một điểm neo trên một trong các mặt phẳng được phát hiện.
- Nhấn vào nút LƯU TRỮ để lưu trữ điểm neo đã đặt. Thao tác này sẽ gửi một yêu cầu lưu trữ đến ARCore API, bao gồm cả dữ liệu biểu thị vị trí của neo so với các đặc điểm trực quan ở gần đó.
Yêu cầu lưu trữ thành công sẽ thiết lập một neo tại vị trí được đặt và chỉ định cho neo đó một mã nhận dạng Neo trên đám mây. Nếu yêu cầu của người tổ chức thành công, ứng dụng sẽ hiển thị mã phòng. Bạn có thể dùng mã này để truy cập vào các neo được lưu trữ trước đó cho căn phòng này trên mọi thiết bị.
Giải quyết một điểm neo
- Nhấn vào RESOLVE rồi nhập mã phòng đã trả về trước đó để truy cập vào các neo được lưu trữ trong phòng này. Thao tác này sẽ gửi một yêu cầu phân giải đến ARCore API, yêu cầu này sẽ trả về mã nhận dạng của tất cả các neo hiện đang được lưu trữ trong phòng.
cloud_anchor_javasẽ dùng các mã nhận dạng này để hiển thị các đối tượng 3D được đính kèm vào các neo được lưu trữ.
Bước tiếp theo
- Tạo một ứng dụng Cloud Anchors bằng Lớp học lập trình ARCore Cloud Anchors với tính năng điểm neo đám mây cố định.
- Tìm hiểu cách kết hợp Neo trên đám mây vào ứng dụng của bạn bằng hướng dẫn dành cho nhà phát triển Neo trên đám mây.
- Quản lý Cloud Anchors bên ngoài ứng dụng ARCore bằng API Quản lý Cloud Anchors.