连接FusedLocationApi后如何获取位置?

时间:2019-01-14 11:33:25

标签: android fusedlocationproviderapi

我使用以下代码使用 FusedLocationApi 来获取用户的位置,但是当位置实际更改但未发送初始位置时,似乎onLocationChanged确实有效。当我启动Api时,什么都没有发生,但是当我更改位置时,将调用目标函数。

这就是我启动Api的方式:

   @Override
    public void onConnected(Bundle dataBundle) {
       LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);
    }

这就是我调用自己的函数的方式:

@Override
public void onLocationChanged(Location location) {
    if (location != null) {
        CurrentLocation=String.valueOf(location.getLatitude())+"_"+String.valueOf(location.getLongitude());
        analyzeData(CurrentLocation);
    }
}

onConnected被触发后,如何立即获得位置信息,而不是位置更改信息。谢谢

1 个答案:

答案 0 :(得分:0)

onLocationChange仅在如上所述更改位置时被调用。 因此,如果您需要在onConnect被触发后立即获取位置,则需要使用自爆代码来解决该问题,直到onLocationChange被触发为止

private FusedLocationProviderClient mFusedLocationClient;

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location. In some rare situations this can be null.
                if (location != null) {
                    // Logic to handle location object
                }
            }
        });