【发布时间】:2021-02-21 22:41:02
【问题描述】:
我正在尝试使用 Android 获取用户的最后一个已知位置。我可以使用融合位置来做到这一点,但我正在尝试制作一个简单的方法来返回用户的纬度和经度位置。
这是我尝试过的:
public static double[] getLocation (Context c) {
final double[] returnLocation = {0, 0};
FusedLocationProviderClient fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(c);
if (c.getApplicationContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationProviderClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
returnLocation[0] = location.getLatitude();
returnLocation[1] = location.getLongitude();
}
}
});
}
return returnLocation;
}
但是,我担心这是异步的,所以它在没有实际获取位置的情况下返回。
感谢您的帮助。
【问题讨论】:
-
按照定义,你想要的都是不可能的。您可以尝试获取最后一个已知位置,尽管这可能是
null。否则,您需要考虑到确定位置可能需要一些时间。在某些情况下,它可能不会成功(例如,电话在大型建筑物内)。这就是为什么用于查找位置的 API 是异步的。
标签: java android location fusedlocationproviderapi