我使用以下代码使用 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
被触发后,如何立即获得位置信息,而不是位置更改信息。谢谢
答案 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
}
}
});