【问题标题】:Get location updates using location callbacks使用位置回调获取位置更新
【发布时间】:2018-04-07 11:52:14
【问题描述】:

我正在尝试使用FusedLocationProviderClient 获取用户位置,如下所示:

fusedLocationProviderClient.requestLocationUpdates(mLocationRequest, locationCallback, null);

我在这个位置调用中获得位置更新

 locationCallback = new LocationCallback() {
            @Override
            public void onLocationResult(LocationResult locationResult) {
                super.onLocationResult(locationResult); 
                for (Location location : locationResult.getLocations()) {
                    // list of locations
                }
            }
        };

我读到locationResult.getLocations() 检索从最旧到最新排序的位置对象列表, 我无法理解我现在想要的只是获取用户位置。

对此有何帮助?

【问题讨论】:

  • 在位置循环中,您必须使用 locationResult.getLastLocation() 这将帮助您
  • 或者去官方文档获取更多帮助。

标签: java android location-services google-location-services fusedlocationproviderclient


【解决方案1】:

您可以使用locationResult.getLastLocation() 获取可用的最新位置。

来自文档:LocationResult.getLastLocation()

public Location getLastLocation ()
    Returns the most recent location 
    available in this result, or null if no 
    locations are available.

【讨论】:

    【解决方案2】:

    您可以使用LocationManager 代替FusedLocationProviderClient。这可能会更容易。

        LocationManager manager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
        LocationListener locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                Log.d("Current location", location.toString());
            }
    
            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {
    
            }
    
            @Override
            public void onProviderEnabled(String s) {
    
            }
    
            @Override
            public void onProviderDisabled(String s) {
    
            }
        };
        //Checks permission
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
    

    这将在用户移动时为您提供位置。

    【讨论】:

    • 感谢您的回答,但使用 LocationListener 获取用户位置需要更多时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多