Lấy thông tin vị trí tương đối

Để tôn trọng quyền riêng tư của người dùng, nhà phát triển ứng dụng chỉ nên yêu cầu những thông tin thô quyền truy cập thông tin vị trí. Những ứng dụng cần có vị trí tương đối gần đúng thường sử dụng vị trí mạng (FLP) vì dịch vụ này nhanh và tiêu thụ ít điện năng hơn.

So với các thiết bị di động chạy Android, vị trí mạng trong ứng dụng trên ô tô có thể khó khăn hơn. Bạn có thể sử dụng 2 API của Android:

  • API LocationManager yêu cầu bạn xác định rõ ràng ứng dụng ưu tiên nhà cung cấp vị trí.

  • API Dịch vụ Google Play cung cấp một cách đơn giản hơn để bạn làm việc với vị trí với sự giới thiệu của Trình cung cấp vị trí kết hợp (FLP).

Nhiều ứng dụng dành cho ô tô sử dụng FLP từ API Dịch vụ Google Play (GPS) thay vì LM. FLP chọn nhà cung cấp vị trí tối ưu dựa trên yêu cầu truy cập thông tin vị trí tiêu chí và chính sách (sức mạnh và độ chính xác) mà xe cần đến.

Thay vào đó, bạn có thể chọn yêu cầu và sử dụng NETWORK_PROVIDER trong LM, cũng như GPS_PROVIDER cho các vị trí chi tiết, trong đó sử dụng android.permission.ACCESS_FINE_LOCATION quyền truy cập. Trong API 31, FUSED_PROVIDER, trước đây chỉ có thể truy cập thông qua API GPS, bây giờ có sẵn dưới dạng nhà cung cấp vị trí cho LM. Bạn có thể xem triển khai FLP, trong FusedLocationProvider.java.

Mặc dù bạn chỉ có thể sử dụng GPS_PROVIDER với các quyền tương đối, khung này làm giảm độ chính xác một cách giả tạo để phù hợp với kỳ vọng, là không phù hợp với các nhà phát triển nhắm mục tiêu đến điện thoại Android vì nhìn chung, tình trạng sẵn có kém và thường chậm hơn để có được vị trí tương đối.

Vị trí mạng trên ô tô

NETWORK_PROVIDER được sử dụng trên điện thoại Android (có Các dịch vụ của Google dành cho thiết bị di động) đã đã thay đổi từ việc xác định vị trí chỉ dựa vào các trạm phát sóng lân cận thành cũng sử dụng điểm truy cập Wi-Fi hoặc thậm chí cả beacon Bluetooth (BT). Việc sử dụng NETWORK_PROVIDER có thể cần có kết nối dữ liệu.

Đối với các ứng dụng dành cho ô tô, các quy tắc ràng buộc đối với thiết bị sẽ khác nhau. Vì GNSS thường bật, do mức sử dụng pin và mức sử dụng pin cao hơn. Là một nên thời gian hoạt động của IVI không bị ảnh hưởng. Chúng tôi cố gắng giảm thiểu dữ liệu được trao đổi với các máy chủ của chúng tôi.

Do đó, rất nhiều ứng dụng sử dụng FLP từ Play API thay vì LM trực tiếp như FLP tự động thực hiện điều thông minh bằng cách sử dụng nhà cung cấp vị trí tốt nhất có thể đáp ứng các tiêu chí/chính sách yêu cầu thông tin vị trí (cụ thể là sức mạnh và độ chính xác) theo mui xe.

Không giống như thiết bị di động, phương tiện di chuyển hiếm khi có vẻ như nhảy từ một nơi sang khác. Hầu như lúc nào hệ thống cũng xác định được vị trí của xe ở dưới mui xe.

Nhà cung cấp vị trí mạng

Hầu hết các loại xe không triển khai API điện thoại bắt buộc để nhận thông tin cần thiết trên Cell ID (và cường độ tín hiệu). Kết quả là, vì chúng tôi giảm thiểu tối đa dữ liệu mà không có cách triển khai chức năng bổ sung nào của NLP.

Trình cung cấp vị trí kết hợp

FLP di động, ngoài việc sử dụng thông minh các nhà cung cấp mạng và GPS thích hợp, kết hợp thông tin từ các cảm biến khác để cải thiện hơn nữa chất lượng của địa điểm. Việc triển khai FLP của Automotive hiện tại trên mặt khác tận dụng các giả định và cách sử dụng nói trên GPS_PROVIDER luôn là nguồn cơ bản. Giúp làm rối vị trí từ GNSS, thêm một số lỗi để chính xác hơn khi cần. Ví dụ: khi cung cấp vị trí tương đối cho khách hàng.

Do đó, trong một số ít trường hợp, thời gian để vị trí đầu tiên sẽ có sẵn. Ví dụ: lần đầu tiên xe ô tô hoặc chính xác hơn, hệ thống con về vị trí của thiết bị đó sẽ được sử dụng hoặc sau khi được kéo đi.

Thiết kế ứng dụng nhắm đến mục đích sử dụng thiết bị di động và ô tô

Những ứng dụng nên nhắm đến thiết bị di động thiết bị trên ô tô không đòi hỏi chất lượng cao hơn cho yêu cầu có độ chính xác cao hơn android.permission.ACCESS_COARSE_LOCATION chỉ và quay lại sử dụng FLP khi có sẵn. Ngoài ra, khi không còn cách nào khác, hãy trực tiếp sử dụng GPS_PROVIDER với các quyền tương tự. Khung làm giảm độ chính xác của Vị trí GNSS để phù hợp với kỳ vọng về API. Để tìm hiểu thêm, hãy xem bài viết Độ chính xác.

Ngoài ra, các ứng dụng này phải khai báo rõ ràng android.hardware.location.network tính năng không bắt buộc trong tệp kê khai. Ví dụ:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

Phương pháp này đảm bảo khả năng tương thích tối đa với các thiết bị ở nhiều ngành dọc và do đó, khả năng sử dụng tối đa của ứng dụng mà không có sự khác biệt về mã để nhận được vị trí khi cần.