Bắt đầu nhanh Cloud Anchors cho Android

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_javapersistent_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_java là 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_java là 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

Yêu cầu

Phần cứng

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_javapersistent_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

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

  2. 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

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

  2. 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.

  1. Thêm Firebase vào ứng dụng của bạn theo cách thủ công. Tên gói cloud_anchor_javacom.google.ar.core.examples.java.cloudanchor. Bạn có thể tìm thấy thành phần 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 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

  1. Đả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.
  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ẽ 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

  1. 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.
  2. 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

  1. 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_java 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ào các neo được lưu trữ.

Neo đám mây

Chạy ứng dụng

  1. Đả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.
  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ẽ 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

  1. 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.
  2. 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

  1. 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_java 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ào các neo được lưu trữ.

Bước tiếp theo