首页 > 解决方案 > FusedLocationApi 连接后如何获取位置?

问题描述

我使用以下代码使用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被解雇而不是位置更改,我如何才能获得位置。谢谢

标签: androidfusedlocationproviderapi

解决方案


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
                }
            }
        });

推荐阅读