我是安卓新手,但我目前的项目需要使用GPS跟踪。我在网上搜索了一些答案,有些话题让我感到困惑。你能告诉我吗,我不确定我是否理解:
- 我们需要在哪里使用粗的,什么时候细?
- 使用
NETWORK_PROVIDER
和GPS_PROVIDER
的主要区别是什么?
从文档中:
如果您同时使用
NETWORK_PROVIDER
和GPS_PROVIDER
,则只需请求ACCESS_FINE_LOCATION
权限,因为它包含两个提供程序的权限。ACCESS_COARSE_LOCATION
权限仅允许访问NETWORK_PROVIDER
。
简而言之,区别在于您获得的位置的详细程度。
网络提供商使用手机信号塔、wifi接入点等确定用户的位置,在手机信号塔的情况下,会考虑信号塔之间的距离和用户的位置。此位置提供程序提供更快的响应,但可能模糊。
GPS提供商使用卫星确定用户的位置。这通常更精确,但需要更多时间。
注意:还有一个PASSIVE_PROVIDER
,它不会主动请求位置,但能够窃听其他应用程序的请求,即当其他应用程序请求时,它会获取位置信息。
融合位置提供程序提供定位技术并为您提供最佳位置。此api使用户无需在设备上使用太多电源即可访问最佳位置。
添加到清单
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
在活动代码中
private FusedLocationProviderClient flpClient;
flpClient = LocationServices.getFusedLocationProviderClient(this);
获取最后一个已知位置
flpClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
// Logic to handle location object
}
}
});
查看 api 以获取进一步的说明 https://developer.android.com/training/location/