在函数调用 Android 中同步获取位置

问题描述

我正在尝试使用 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);
                }
            }
        });
    }