Định cấu hình chế độ cài đặt của ứng dụng để ứng dụng có thể sử dụng API không gian địa lý.
Điều kiện tiên quyết
Hãy đảm bảo rằng bạn hiểu rõ các khái niệm cơ bản về thực tế tăng cường và cách định cấu hình một phiên ARCore trước khi tiếp tục.
Ứng dụng mẫu và lớp học lập trình
Video này hướng dẫn các bước xây dựng một ứng dụng hiển thị dữ liệu không gian địa lý và đặt nội dung ở các vị trí thực tế bằng cách sử dụng API không gian địa lý.
Bạn cũng có thể làm theo tài liệu Lớp học lập trình về không gian địa lý cho các bước tương tự. Để chạy ứng dụng mẫu được tạo trong video, hãy xem phần Bắt đầu nhanh về không gian địa lý ARCore.
Hãy xem bài viết Giới thiệu về API không gian địa lý để biết thêm thông tin về API không gian địa lý.
Nếu bạn mới bắt đầu 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 phần cứng và phần mềm, điều kiện tiên quyết và các thông tin khác dành riêng cho các nền tảng mà bạn đang sử dụng.
Đảm bảo môi trường phát triển của bạn đáp ứng các yêu cầu về SDK ARCore, như mô tả trong phần Bắt đầu nhanh.
Bật API ARCore
Trước khi sử dụng Hệ thống định vị bằng hình ảnh (VPS) trong ứng dụng, trước tiên, bạn phải bật ARCore API trong một dự án Google Cloud mới hoặc hiện có. Dịch vụ này chịu trách nhiệm lưu trữ, lưu trữ và phân giải neo không gian địa lý.
Bạn nên sử dụng phương thức uỷ quyền không cần khoá, nhưng phương thức uỷ quyền bằng Khoá API cũng được hỗ trợ.
Thêm thư viện bắt buộc vào ứng dụng
Sau khi uỷ quyền cho ứng dụng gọi API ARCore, bạn phải thêm thư viện để bật các tính năng Địa không gian trong ứng dụng.
Trong tệp build.gradle
của ứng dụng, hãy thiết lập Dịch vụ Google Play để thêm Thư viện vị trí của Dịch vụ Google Play.
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 cấu hình phiên thành ENABLED
:
Java
Config config = session.getConfig(); config.setGeospatialMode(Config.GeospatialMode.ENABLED); session.configure(config);
Kotlin
// Enable the Geospatial API. session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })
Khi chế độ Không gian địa lý được đặt thành ENABLED
, ứng dụng được phép thu thập thông tin địa lý từ Hệ thống định vị bằng hình ảnh (VPS).
Nhắc người dùng cho phép sử dụng dữ liệu thiết bị
Các ứng dụng sử dụng API không gian địa lý ARCore phải hiển thị cho người dùng một lời nhắc để xác nhận và cho phép sử dụng dữ liệu từ thiết bị của họ. Hãy xem Yêu cầu về quyền riêng tư của người dùng để biết thêm thông tin.
Kiểm tra khả năng tương thích của thiết bị
Không phải thiết bị nào hỗ trợ ARCore cũng hỗ trợ API Không gian địa lý, như mô tả trong phần bắt đầu nhanh.
Để kiểm tra khả năng tương thích của thiết bị của người dùng, hãy gọi Session.checkGeospatialModeSupported()
.
Nếu giá trị này trả về false, đừng cố định cấu hình phiên (dưới đây), vì việc này sẽ gửi một UnsupportedConfigurationException
.
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 quyền bổ sung sau:
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ủ các yêu cầu về quyền riêng tư của người dùng. Tuy nhiên, bạn không thể định cấu hình API không gian địa lý để hoạt động với vị trí không chính xác và các yêu cầu API sẽ không thành công khi người dùng đã đặt 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ý 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 rằng ứng dụng của bạn chỉ có quyền truy cập vào thông tin vị trí ước chừng. Để đáp ứng yêu cầu này, ứng dụng của bạn phải được định cấu hình quyền ACCESS_COARSE_LOCATION
cùng với ACCESS_FINE_LOCATION
như minh hoạ ở 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 API không gian địa lý lấy được vị trí chính xác mà API cần. 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 xem tính năng Không gian địa lý có được cung cấp tại vị trí hiện tại của thiết bị hay không
Vì API không gian địa lý sử dụng kế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 vị trí của nó. Ở 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 VPS để tạo ra các tư thế có độ chính xác cao. Trong điều kiện thông thường, VPS có thể cung cấp độ chính xác về vị trí khoảng 5 mét và độ chính xác về độ xoay khoảng 5 độ. Sử dụng Session.checkVpsAvailabilityAsync()
để xác định xem một vị trí nhất định có phạm vi cung cấp 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 cung cấp VPS. Trong môi trường ngoài trời có ít hoặc không có vật cản phía trên, GPS có thể đủ để tạo ra một tư thế có độ chính xác cao.
Bước tiếp theo
- Nhận tư thế không gian địa lý của máy ảnh thiết bị để xác định vị trí chính xác của thiết bị của người dùng trong thế giới thực.
- Kiểm tra xem VPS có sẵn hay không tại một vị trí nhất định của thiết bị.