获取设备位置Android

时间:2018-10-23 16:13:19

标签: android kotlin gps location

我是android的新手,但是我当前的项目需要使用gps跟踪。我已经在网上搜索了一些答案,有些话题使我感到困惑。您能告诉我吗,我不确定我是否了解:

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

2 个答案:

答案 0 :(得分:1)

来自documentation

  

如果同时使用NETWORK_PROVIDERGPS_PROVIDER,则只需要请求ACCESS_FINE_LOCATION权限,因为它包括两个提供者的权限。 ACCESS_COARSE_LOCATION的权限仅允许访问NETWORK_PROVIDER

因此,简而言之,区别在于您所获得位置的详细信息级别。

网络提供商确定使用手机信号塔,WiFi接入点等的用户位置。如果使用手机信号塔,则考虑信号塔之间的距离和用户的位置。该位置提供程序提供了更快的响应,但可能是模糊的。

GPS提供商确定使用卫星的用户的位置。这通常更精确,但是会花费更多时间。

注意:还有一个PASSIVE_PROVIDER,它不会主动请求位置,但是能够窃听其他应用程序的请求,即其他应用要求时提供的位置信息。

答案 1 :(得分:0)

融合位置提供程序提供 location 技术并为您提供最佳位置。此 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/