问题描述
我正在尝试使用 Android 获取用户的最后一个已知位置。我可以使用融合位置来做到这一点,但我正在尝试制作一种简单的方法来返回用户的纬度和经度位置。
这是我尝试过的:
env:
variables:
Execution_ID: $Execution_ID
Commit_ID: $Commit_ID
但是,我担心这是异步的,所以它在没有实际获取位置的情况下返回。
感谢您的帮助。
解决方法
getLastLocation
用于获取缓存中的位置信息,如果没有缓存信息,则返回null
。
你可以这样做,我会每2秒触发一次这个方法,直到我得到最后一个位置。
private void setFusedLocationProviderClient() {
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
final Task<Location> locationResult = fusedLocationProviderClient.getLastLocation();
locationResult.addOnCompleteListener(this,task -> {
if (task.isSuccessful()) {
// Set the map's camera position to the current location of the device.
if (task.getResult() != null) {
//Success
} else {
//Create delay
CreateDelay(2000,this::setFusedLocationProviderClient);
}
}
});
}