FusedLocationApi 连接后如何获取位置?

Posted

技术标签:

【中文标题】FusedLocationApi 连接后如何获取位置?【英文标题】:How to get location as soon as FusedLocationApi connected? 【发布时间】: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 被触发而不是位置更改时立即获取位置。谢谢

【问题讨论】:

使用 setFastestInterval(); ***.com/a/26407873/7094064 【参考方案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
                
            
        );

【讨论】:

以上是关于FusedLocationApi 连接后如何获取位置?的主要内容,如果未能解决你的问题,请参考以下文章

使用 fusedlocationapi 获取位置,而无需在一段时间后请求位置更新

在Android中使用FusedLocationApi时如何获取Location的模式

android模拟位置不适用于locationservices.fusedlocationapi

使用 FusedLocationApi 获取离线位置

Android 的 FusedLocationApi 不激活 GPS 并返回非常旧的日期

等到 GPS 启用,然后在 FusedLocationAPI 中获取 lat 和 long 值