Bật API Không gian địa lý cho ứng dụng Android NDK (C)

Định cấu hình chế độ cài đặt của ứng dụng để có thể sử dụng API Không gian địa lý.

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

Đảm bảo rằng bạn hiểu rõ các khái niệm cơ bản về AR và cách định cấu hình phiên ARCore trước khi tiếp tục.

Nếu bạn muốn chạy một ứng dụng mẫu minh hoạ chức năng được mô tả tại đây, hãy xem Bắt đầu nhanh không gian địa lý ARCore dành cho Android cho Java. Ứng dụng mẫu trong Quickstart được viết bằng Java. Mã mẫu trong tài liệu này dành cho chức năng tương tự được viết trong C.

Xem Giới thiệu về API Không gian địa lý để biết thêm thông tin thông tin về API không gian địa lý.

Nếu bạn mới phát triển bằng ARCore, hãy xem phần Bắt đầu để biết thông tin về các yêu cầu, điều kiện tiên quyết và phần mềm và phần cứng thông tin khác dành riêng cho các nền tảng mà bạn đang sử dụng.

Hãy đảm bảo rằng môi trường phát triển của bạn đáp ứng các yêu cầu về ARCore SDK, vì được mô tả trong phần Bắt đầu nhanh dành cho Java.

Bật API ARCore

Trước khi sử dụng Hệ thống định vị hình ảnh (VPS) trong ứng dụng của mình, bạn phải bật ARCore API trong một dự án mới hoặc hiện có trên Google Cloud. Dịch vụ này chịu trách nhiệm về lưu trữ, lưu trữ và giải quyết các neo không gian địa lý.

Ưu tiên phương thức uỷ quyền không dùng khoá, nhưng hệ thống cũng hỗ trợ phương thức uỷ quyền Khoá API.

Thêm các thư viện cần thiết vào ứng dụng của bạn

Sau khi cho phép ứng dụng của bạn gọi API ARCore, bạn phải thêm thư viện vào bật tính năng Không gian địa lý trong ứng dụng của bạn.

Trong tệp build.gradle của ứng dụng, hãy thiết lập Dịch vụ Google Play để thêm ứng dụng Play Thư viện Vị trí dịch vụ.

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

Bật các chức năng Không gian địa lý trong cấu hình phiên

Trước khi tạo phiên, hãy thay đổi GeospatialMode trong phiên của bạn cấu hình thành ENABLED:

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

Mặc dù bạn đặt chế độ Không gian địa lý thành ENABLED, ứng dụng vẫn được phép thu thập thông tin địa lý từ Hệ thống Định vị Trực quan (VPS).

Nhắc người dùng cho phép sử dụng dữ liệu thiết bị

Ứng dụng dùng API Không gian địa lý ARCore phải hiển thị cho người dùng lời nhắc để xác nhận và cho phép sử dụng dữ liệu trên thiết bị của trẻ. Xem Yêu cầu về quyền riêng tư của người dùng để biết thêm thông tin của bạn.

Kiểm tra khả năng tương thích của thiết bị

Không phải tất cả thiết bị hỗ trợ ARCore cũng hỗ trợ API Không gian địa lý, vì như mô tả trong phần bắt đầu nhanh cho Java.

Để kiểm tra khả năng tương thích với thiết bị của người dùng, hãy gọi ArSession_isGeospatialModeSupported(). Nếu giá trị trả về là false thì đừng cố định cấu hình phiên (ở bên dưới), như đang thực hiện nên sẽ khiến ArStatus báo cáo AR_ERROR_UNSUPPORTED_CONFIGURATION.

Yêu cầu người dùng cấp quyền truy cập thông tin vị trí trong thời gian chạy

Ứng dụng của bạn phải yêu cầu quyền truy cập thông tin vị trí trong thời gian chạy.

Để sử dụng API Không gian địa lý ARCore, ứng dụng của bạn cần đăng ký các thông tin sau quyền bổ sung:

  • ACCESS_FINE_LOCATION để xác định chính xác vị trí của người dùng.

  • ACCESS_COARSE_LOCATION để xác định không chính xác vị trí của người dùng và để tuân thủ yêu cầu về quyền riêng tư của người dùng. Tuy nhiên, không thể định cấu hình API Không gian địa lý hoạt động với vị trí tương đối và yêu cầu API sẽ không thực hiện được khi người dùng thiết lập quyền này. Hãy xem mục bên dưới để biết thêm thông tin.

  • ACCESS_INTERNET để liên hệ với dịch vụ API Không gian địa lý của ARCore.

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Trên các thiết bị chạy Android phiên bản 12 trở lên, người dùng có thể yêu cầu mà ứng dụng của bạn chỉ có quyền truy cập vào vị trí ước chừng của bạn. Để đáp ứng yêu cầu này, ứng dụng của bạn phải có ACCESS_COARSE_LOCATION quyền đã được định cấu hình, cùng với ACCESS_FINE_LOCATION, như đã trình bày ở trên. Bạn phải định cấu hình cả hai quyền truy cập thông tin vị trí.

Tuy nhiên, khi người dùng chỉ định vị trí tương đối, việc này sẽ ngăn Không gian địa lý API này có thể thu thập thông tin vị trí chính xác mà API đó yêu cầu. Dịch vụ Không gian địa lý sẽ không cho phép tự định cấu hình nếu ứng dụng của bạn chỉ cung cấp thông tin vị trí tương đối. Ứng dụng của bạn không thể sử dụng API không gian địa lý với thông tin vị trí tương đối.

Kiểm tra tính khả dụng không gian địa lý tại vị trí hiện tại của thiết bị

Vì API Không gian địa lý sử dụng tổ hợp VPS và GPS để xác định tư thế Không gian địa lý, nên bạn có thể sử dụng API này, miễn là thiết bị có thể xác định được vị trí của thiết bị. Ở những khu vực có độ chính xác GPS thấp, chẳng hạn như không gian trong nhà và môi trường đô thị đông đúc, API sẽ dựa vào phạm vi phủ sóng của VPS để tạo các tư thế có độ chính xác cao. Trong điều kiện thông thường, máy chủ ảo có thể được cung cấp độ chính xác về vị trí khoảng 5 mét và độ chính xác quay là 5 độ. Sử dụng ArSession_checkVpsAvailabilityAsync() để xác định xem một vị trí cụ thể có phạm vi phủ sóng của VPS hay không.

Bạn cũng có thể sử dụng API không gian địa lý ở những khu vực không có phạm vi phủ sóng của VPS. Trong môi trường ngoài trời có ít hoặc không có vật cản trên đầu, GPS có thể đủ để tạo tư thế với độ chính xác cao.

Các bước tiếp theo