Bắt đầu nhanh Cloud Anchors cho Android

Dùng thử tính năng lưu trữ và phân giải Cloud Anchors trong các ứ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?

Cloud Anchor là các neo được lưu trữ trên điểm cuối trên đám mây của ARCore API. API này cho phép người dùng chia sẻ các trải nghiệm trong cùng một ứng dụng. Neo neo trên đám mây ổn định là các neo đám mây có thể được lưu trữ trong hơn 24 giờ.

  • persistent_cloud_anchor_java là quy trình triển khai trường hợp sử dụng dự án cộng tác. Cơ chế này sử dụng cơ chế uỷ quyền không cần khoá để uỷ quyền cho các lệnh gọi API ARCore. Vì giải pháp này không sử dụng phần phụ trợ của Firebase để chia sẻ mã Cloud Anchor giữa các thiết bị, nên bạn có thể thiết lập và chạy dễ dàng hơn nhiều.
  • cloud_anchor_java là cách triển khai một trường hợp sử dụng nhiều người chơi. Thư viện này sử dụng khoá API để uỷ quyền cho 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
  • Bạn có thể tải SDK ARCore dành cho Android theo một trong hai cách:
    • Tải xuống từ GitHub và trích xuất 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

SDK ARCore 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.

Neo liên tục 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 tới mẫu > persistent_cloud_anchor_java rồi nhấp vào 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 tới mẫu > cloud_anchor_java rồi nhấp vào 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 đám mây là các chuỗi xác định các neo Cloud được lưu trữ. Các API này đượ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ữ.

Neo liên tục trên đám mây

Tính năng chia sẻ mã Cloud Anchor được duy trì cục bộ trong ứng dụng. Bạn không phải làm gì thêm trong phần nà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ã Cloud Anchor giữa các thiết bị. Bạn có thể sử dụng một giải pháp khác trong ứ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 thông tin 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

Cho phép các lệnh gọi đến ARCore API để lưu trữ và phân giải Cloud Anchors cho . Làm theo các bước để biết cách Sử dụng API ARCore trên Google Cloud và sử dụng giải pháp Keyless (Không dùng khoá) uỷ quyền cho Persistent Cloud Anchors hoặc uỷ quyền Khoá API cho Cloud Neo.

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

Neo liên tục trên đá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).

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 máy bay ở phía trước máy ảnh của thiết bị.

Nếu quá trình 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 quảng cáo cố định

  1. Khi ứng dụng bắt đầu phát hiện các máy bay, hãy nhấn vào màn hình để đặt một neo vào một trong các mặt phẳng đã phát hiện được.
  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ữ đến ARCore API, trong đó có dữ liệu đại diện cho vị trí của điểm neo so với các tính năng trực quan gần đó.

Một 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à gán cho vị trí đó một Cloud Anchor ID. 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ể dùng mã này để truy cập vào các điểm neo được lưu trữ trước đây cho phòng này trên mọi thiết bị.

Phân giải quảng cáo cố định

  1. Nhấn vào GIẢI QUYẾT rồi nhập mã phòng đã được trả về trước đó để truy cập vào các điểm neo được lưu trữ trong phòng này. Thao tác này sẽ gửi yêu cầu phân giải đến ARCore API. API này sẽ trả về mã nhận dạng của tất cả quảng cáo cố định hiện được lưu trữ trong phòng. persistent_cloud_anchor_java sẽ sử dụng các mã nhận dạng này để kết xuất các đối tượng 3D được đính kèm với các neo được lưu trữ.

Neo trên đá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 máy bay ở 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ể nhận được 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 quảng cáo cố định

  1. Khi ứng dụng bắt đầu phát hiện các máy bay, hãy nhấn vào màn hình để đặt một neo vào một trong các mặt phẳng đã phát hiện được.
  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ữ đến ARCore API, trong đó có dữ liệu đại diện cho vị trí của điểm neo so với các đặc điểm trực quan gần nó.

Một 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à gán cho vị trí đó một mã nhận dạng Cloud Anchors. 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ể dùng mã này để truy cập vào các điểm neo được lưu trữ trước đây cho phòng này trên mọi thiết bị.

Phân giải quảng cáo cố định

  1. Nhấn vào GIẢI QUYẾT rồi nhập mã phòng đã được trả về trước đó để truy cập vào các điểm neo được lưu trữ trong phòng này. Thao tác này sẽ gửi yêu cầu phân giải đến ARCore API. API này sẽ trả về mã nhận dạng của tất cả quảng cáo cố định hiện được lưu trữ trong phòng. cloud_anchor_java sẽ sử dụng các mã nhận dạng này để kết xuất các đối tượng 3D được đính kèm với các neo được lưu trữ.

Bước tiếp theo