Để 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 kết hợp (FLP) vì dịch vụ này nhanh và tốn ít pin 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 sử dụng
requestLocationUpdates
để xác định rõ nhà cung cấp vị trí ưa thích.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í ở
FusedLocationProviderClient
.
Nhiều ứng dụng dành cho ô tô sử dụng FLP trong API Dịch vụ Google Play thay vì
LocationManager
. FLP chọn nhà cung cấp vị trí tối ưu dựa trên vị trí
yêu cầu các tiêu chí và chính sách (sức mạnh và độ chính xác) cần thiết cho xe.
Thay vào đó, bạn có thể chọn yêu cầu và sử dụng
NETWORK_PROVIDER
cũng như
GPS_PROVIDER
cho
vị trí chi tiết, trong đó sử dụng
android.permission.ACCESS_FINE_LOCATION
quyền truy cập. Trên Android 12 (API cấp 31) trở lên,
FUSED_PROVIDER
!
trước đây chỉ có thể truy cập thông qua API Dịch vụ Google Play,
có sẵn dưới dạng nhà cung cấp vị trí cho LocationManager
. Bạn có thể xem cách 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 với quyền —
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)
xác định vị trí dựa trên các trạm phát sóng di động, điểm truy cập Wi-Fi và
beacon Bluetooth (BT). Do đó, NETWORK_PROVIDER
có thể yêu cầu dữ liệu
kết nối.
Đố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ì điều hướng toàn cầu Gthe hệ thống vệ tinh (GNSS) thường đang bật, không có hình phạt nào bị phát sinh do mức sử dụng pin và điện năng tăng thêm. Do đó, thời gian hoạt động 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ừ API Play thay vì LocationManager
trực tiếp vì FLP tự động thực hiện điều thông minh bằng cách sử dụng thông tin vị trí
nhà cung cấp có thể đáp ứng tốt nhất 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).
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ừ nơi này đến nơi khác khác. Hầu như lúc nào thông tin vị trí của xe cũng được biết dưới mui xe.
Nhà cung cấp vị trí mạng (NLP)
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 nêu trên và sử dụng
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, có thể sẽ mất nhiều thời gian hơn bình thường để 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ô
Đối với những ứng dụng nhắm đến thiết bị di động và ô tô không
đòi hỏi chất lượng chính xác cao hơn, hãy yêu cầu
android.permission.ACCESS_COARSE_LOCATION
chỉ và quay lại sử dụng FLP nếu có thể. Ngoài ra, hãy sử dụng
GPS_PROVIDER
trực tiếp với các quyền tương tự. Khung này làm giảm hiệu suất
độ chính xác của vị trí GNSS cơ bản để phù hợp với kỳ vọng về API. Người nhận
tìm hiểu thêm, hãy xem bài viết Mức độ chính xác
trong phần Yêu cầu quyền truy cập thông tin vị trí.
Ngoài ra, các ứng dụng này phải khai báo rõ ràng
android.hardware.location.network
dưới dạ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.