1

我正在使用定位套件,华为定位套件在我在空旷区域时效果很好,但是当我进入室内时,它要么获得定位超晚,要么获得超低精度的定位。

我的位置请求如下所示:

//create a fusedLocationProviderClient
fusedLocationProviderClient = 
LocationServices.getFusedLocationProviderClient(this);
//create a settingsClient
settingsClient = LocationServices.getSettingsClient(this);
mLocationRequest = new LocationRequest();
// set the interval for location updates, in milliseconds. 
mLocationRequest.setInterval(10000);

我的回调是:

mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
    if (locationResult != null) {
        List<Location> locations = locationResult.getLocations();
        if (!locations.isEmpty()) {
            for (Location location : locations) {
                Log.i(TAG,"onLocationResult location[Longitude,Latitude,Accuracy]:" + location.getLongitude() + "," + location.getLatitude() + "," + location.getAccuracy());
            }
        }
    }
}

@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
    if (locationAvailability != null) {
        boolean flag = locationAvailability.isLocationAvailable();
        Log.i(TAG, "onLocationAvailability isLocationAvailable:" + flag);
    }
}

任何帮助表示赞赏。

4

1 回答 1

3

华为Location Kit通过结合多源数据来获取用户的位置。

这意味着在某些场景中,来自 GPS、基站、WiFi 和蓝牙的数据被结合起来以获得更准确的位置。

在室内时,无法获得来自 GPS 的数据,因此需要其他来源来确定用户的位置。

如果没有插入SIM 卡,也无法从基站获取网络位置。

因此,如果您在室内测试定位套件时遇到问题,请确保您已将 SIM 卡插入测试设备并且网络可用。

此外,如果您的优先级设置较低,请将您的位置请求优先级设置为最高级别。

locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

获取位置失败的另一个常见原因是 HMS Core 应用没有被授予 Location 权限。

进入设置--> 应用--> 应用--> HMS Core--> 权限--> 位置,查看是否勾选了“始终允许”选项。

如果运行您的应用程序的设备已将该权限授予 HMS Core 应用程序,您还可以使用 SettingsClient 来检查运行时。

更多信息可以在开发者文档中找到:

https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/location-develop-steps-0000001050746143#EN-US_TOPIC_0000001050746143__section149231022103316

于 2020-08-13T10:29:18.497 回答