Android - Fused Location:如何获得强制新位置

Android - Fused Location: How to get force fresh location

我有一个应用允许用户在特定区域使用,这意味着我不需要跟踪用户,但我需要确保接收到的位置是最新的(即使它需要等待)。

最好的方法是什么?目前使用: getLastLocation() 但它有时可以得到以前的位置,这是可以理解的。

如果满足位置条件,您可以register a location listener并继续代码:

locationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        if (locationResult == null) {
            return;
        }
        for (Location location : locationResult.getLocations()) {
            //if(this is the location) jump to the code which makes the app usable
        }
        //stay unusable
    };
};

获取位置可能需要一些时间。如果强制你的意思是保持 ui 线程直到 precise-enough 位置可用,那么强制获取位置是一个糟糕但可行的想法。