android - 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
被解雇而不是位置更改,我如何才能获得位置。谢谢
解决方案
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
}
}
});
推荐阅读
- javascript - 从容器中获取数据
- python - 如何有效地将级别添加到熊猫系列索引以创建多级?
- ios - 具有系统字体、粗体和字距调整的 UIButton 子类
- swift - 快速通知未触发
- excel - 多次运行后重复宏出错
- google-chrome - Chrome 过滤掉 SameSite:None 安全 cookie
- xml - 将一列中的 XML 对象解析为多行,并允许在最后一行之后出现下一个 XML 对象
- javascript - 如何连接到数组状态的最后一项?
- javascript - 表单验证不适用于名称输入框
- datetime - 如何更改 showDatePicker 输入格式颤动