获取设备位置 安卓



我是安卓新手,但我目前的项目需要使用GPS跟踪。我在网上搜索了一些答案,有些话题让我感到困惑。你能告诉我吗,我不确定我是否理解:

  • 我们需要在哪里使用粗的,什么时候细?
  • 使用NETWORK_PROVIDERGPS_PROVIDER的主要区别是什么?

从文档中:

如果您同时使用NETWORK_PROVIDERGPS_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/

最新更新