【问题标题】:Huawei Location Kit Fails to Obtain My Location when I am Indoor华为定位包在室内无法获取到我的位置
【发布时间】:2020-08-13 09:20:35
【问题描述】:

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

我的位置请求如下:

//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);
    }
}

任何帮助表示赞赏。

【问题讨论】:

    标签: android huawei-mobile-services huawei-developers


    【解决方案1】:

    华为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

    【讨论】:

    • 我的问题是将 null 而不是 Looper.getMainLooper() 传递给 requestLocationUpdates 函数。我通过您提供的文档链接意识到了这个问题。感谢您的参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多