【问题标题】:How to get location as soon as FusedLocationApi connected?FusedLocationApi 连接后如何获取位置?
【发布时间】:2019-06-08 09:27:39
【问题描述】:

我使用以下代码使用 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 被触发而不是位置更改时立即获取位置。谢谢

【问题讨论】:

标签: android fusedlocationproviderapi


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 2017-02-20
    • 2018-10-14
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2015-02-17
    相关资源
    最近更新 更多