Bắt đầu nhanh Cloud Anchors cho Android

Hãy thử lưu trữ và phân giải Cloud Anchors (Neo trên đám mây) trong ứng dụng mẫu cloud_anchor_javapersistent_cloud_anchor_java.

Bạn nên sử dụng ứng dụng mẫu nào?

Neo trên đám mây là các neo được lưu trữ trên điểm cuối trên đá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. Cố định trên đám mây liên tục là các neo trên đám mây có thể được lưu trữ trong hơn 24 giờ.

  • persistent_cloud_anchor_java là một cách triển khai một trường hợp sử dụng dự án cộng tác. Tính năng này sử dụng tính năng uỷ quyền không cần khoá để cho phép các lệnh gọi API ARCore. Vì không sử dụng phần phụ trợ của Firebase để chia sẻ Mã neo trên đám mây giữa các thiết bị, nên việc thiết lập và chạy chương trình sẽ dễ dàng hơn nhiều.
  • cloud_anchor_java là cách triển khai trường hợp sử dụng nhiều người chơi. Tính năng này sử dụng khoá API để cho phép các lệnh gọi API ARCore.

Điều kiện tiên quyết

Yêu cầu

Phần cứng

Phần mềm

  • Android Studio phiên bản 3.0 trở lên với Nền tảng SDK Android phiên bản 7.0 (API cấp 24) trở lên
  • Bạn có thể tải SDK ARCore cho Android theo một trong 2 cách sau:
    • Tải xuống từ GitHub rồi giải nén trên máy
    • 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

SDK ARCore cung cấp các ứng dụng mẫu cloud_anchor_javapersistent_cloud_anchor_java để minh hoạ chức năng Neo trên đám mây. Hãy làm theo các bước sau để mở ứng dụng trong Android Studio.

Neo trên đám mây ổn định

  1. Trong Android Studio, hãy nhấp vào Open (Mở).

  2. Chuyển đến vị trí 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 trên đám mây

  1. Trong Android Studio, hãy nhấp vào Open (Mở).

  2. Chuyển đến vị trí 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 neo trên đám mây là các chuỗi xác định các Neo trên đám mây được lưu trữ. Các đối tượng này được dùng để phân giải hoặc kết xuất các đối tượng 3D đi kèm với các neo được lưu trữ.

Neo trên đám mây ổn định

Hoạt động chia sẻ mã nhận dạng neo trên đám mây được duy trì ngay trong ứng dụng. Bạn không cần làm gì thêm ở đây.

Neo trên đá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 trên đám mây giữa các thiết bị. Bạn có thể sử dụng giải pháp khác trong các ứng dụng của mình.

  1. Tự thêm Firebase vào ứng dụng. Tên gói cloud_anchor_javacom.google.ar.core.examples.java.cloudanchor. Bạn có thể tìm thấy mã này trong main/AndroidManifest.xml.
  2. Tải tệp google-services.json mà bạn đã tạo khi thêm Firebase vào ứng dụng của mình.
  3. Tạo Cơ sở dữ liệu theo thời gian thực bằng Firebase.
  4. Trong Android Studio, hãy thêm tệp google-services.json vào thư mục app của dự án.

Cho phép lệnh gọi API ARCore

Uỷ quyền các lệnh gọi đến API ARCore để lưu trữ và phân giải Cloud Anchors cho ứng dụng. Hãy làm theo các bước trong phần Sử dụng API ARCore trên Google Cloud và sử dụng Uỷ quyền không khoá cho Persistent Cloud Anchors hoặc Uỷ quyền khoá API cho Cloud Anchors.

Xây dựng và chạy ứng dụng mẫu

Neo trên đám mây ổn định

Chạy ứng dụng

  1. Hãy đảm bảo rằng thiết bị của bạn đã bật tính năng tuỳ chọn cho nhà phát triển và gỡ lỗi qua USB.
  2. Kết nối thiết bị với máy phát triển qua USB.
  3. 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ẽ chạy trên thiết bị của bạn, nhắc ARCore phát hiện các mặt phẳng ở phía trước máy ảnh của thiết bị.

Nếu việc uỷ quyền cho Google Cloud không thành công, hãy xem Các bước khắc phục sự cố.

Đặt neo

  1. Khi ứng dụng bắt đầu phát hiện máy bay, hãy nhấn vào màn hình của bạn để đặt neo trên một trong các máy bay được phát hiện.
  2. Nhấn vào nút HOST để lưu trữ quảng cáo cố định đã đặt. Thao tác này sẽ gửi một yêu cầu lưu trữ tới API ARCore, bao gồm dữ liệu biểu thị vị trí của điểm neo so với các tính năng hình ảnh 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í đã đặt và chỉ định một mã nhận dạng neo trên đám mây cho liên kết đó. Nếu yêu cầu lưu trữ thành công, ứng dụng sẽ cho thấy mã phòng. Bạn có thể sử dụng mã này để truy cập vào các quảng cáo cố định cuối màn hình đã lưu trữ trước đó cho phòng này trên mọi thiết bị.

Phân giải neo

  1. Nhấn vào GIẢI QUYẾT rồi nhập mã phòng đã trả về trước đó để xem những nội dung liên kết đượ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 tới API ARCore. API này sẽ trả về mã nhận dạng của tất cả thẻ liên kết hiện đang lưu trữ trong phòng. persistent_cloud_anchor_java sẽ sử 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ới các liên kết được lưu trữ.

Neo trên đám mây

Chạy ứng dụng

  1. Hãy đảm bảo rằng thiết bị của bạn đã bật tính năng tuỳ chọn cho nhà phát triển và gỡ lỗi qua USB.
  2. Kết nối thiết bị với máy phát triển qua USB.
  3. 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ẽ chạy trên thiết bị của bạn, nhắc ARCore phát hiện các mặt phẳng ở phía trước máy ảnh 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 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 bạn đã tạo và tải google-services.json xuống Cơ sở dữ liệu theo thời gian thực.


Đặt neo

  1. Khi ứng dụng bắt đầu phát hiện máy bay, hãy nhấn vào màn hình của bạn để đặt neo trên một trong các máy bay được phát hiện.
  2. Nhấn vào nút HOST để lưu trữ quảng cáo cố định đã đặt. Thao tác này sẽ gửi một yêu cầu lưu trữ tới API ARCore, bao gồm dữ liệu biểu thị vị trí của điểm neo so với các tính năng hình ảnh gần đó.

Yêu cầu lưu trữ thành công sẽ thiết lập một liên kết tại vị trí đã đặt và chỉ định mã nhận dạng neo trên đám mây cho liên kết đó. Nếu yêu cầu lưu trữ thành công, ứng dụng sẽ cho thấy mã phòng. Bạn có thể sử dụng mã này để truy cập vào các quảng cáo cố định cuối màn hình đã lưu trữ trước đó cho phòng này trên mọi thiết bị.

Phân giải neo

  1. Nhấn vào GIẢI QUYẾT rồi nhập mã phòng đã trả về trước đó để xem những nội dung liên kết đượ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 tới API ARCore. API này sẽ trả về mã nhận dạng của tất cả thẻ liên kết hiện đang lưu trữ trong phòng. cloud_anchor_java sẽ sử 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ới các liên kết được lưu trữ.

Bước tiếp theo