【问题标题】:The getLastLocation API cannot obtain the Mate 30 device locationgetLastLocation API 无法获取 Mate 30 设备位置
【发布时间】:2020-05-20 02:00:57
【问题描述】:

我正在使用华为定位工具获取设备位置,发现定位结果不稳定。

我有两个测试设备:Mate 30 和 P30 Lite。当我在 Mate 30 上使用 getLastLocation() 方法获取设备位置时,位置结果为空。但是,该方法可以在 P30 Lite 上正确获取设备位置。 HMS Core (APK) 已在两台测试设备上更新至 4.0.3.316 版本。两个测试设备获取设备位置的代码也是一样的,如下所述:

private void getLastLocation() {        
        try {            
            Task<Location> lastLocation = mFusedLocationProviderClient.getLastLocation();       
            lastLocation.addOnSuccessListener(new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {                    
                    if (location == null) {                        
                        LocationLog.i(TAG, "getLastLocation onSuccess location is null");
                    return;
                    }                    
                    LocationLog.i(TAG,                            
                            "getLastLocation onSuccess location[Longitude,Latitude]:" + location.getLongitude() + ","                                    
                                    + location.getLatitude());                
                }            
            }).addOnFailureListener(new OnFailureListener() {                
                @Override                
                public void onFailure(Exception e) {                    
                    LocationLog.e(TAG, "getLastLocation onFailure:" + e.getMessage());                
                }            
            });        
        } catch (Exception e) {
            LocationLog.e(TAG, "getLastLocation exception:" + e.getMessage());        
        }    
    }

为什么会这样?

【问题讨论】:

  • 您使用的是什么位置库? Google 的图书馆?
  • @deadfish 我正在使用华为库定位,4.0.3.303版本。
  • 您是否向 HMS Core 授予了位置权限?

标签: android huawei-mobile-services huawei-location-kit


【解决方案1】:

getLastLocation API 获取 HMS Core 缓存中的最后一个位置。如果 HMS Core 的缓存中没有可用的位置,则返回 null。因此,可能的原因是 Mate 30 设备上从未使用过定位功能或 HMS Core 的缓存已被清除。

建议您不要将使用getLastLocation API 获取的位置作为最新位置,因为该API 无法获取最新位置。建议使用 requestLocationUpdate 获取更精确的位置。有关详细信息,请访问 https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/location-guidev4#h2-1586931075472

使用requestLocationUpdate时,可以根据需要设置回调周期和次数。此外,您可以使用 getLastLocation 作为获取设备位置的替代方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多