目录

[问题一] 是否支持非华为手机?

目前华为定位服务仅支持华为手机。


[问题二] 需要添加的依赖有哪些?

使用定位服务需要添加依赖:

  1. dependencies {       
  2.  implementation 'com.huawei.hms:location:{version}'     
  3. }        
       
提示:
{version} 替换为实际的SDK版本号,例如:implementation 'com.huawei.hms:location:4.0.2.300'。如果您还集成了HMS Core的其它服务,建议您使用相同版本的HMS Core SDK。

[问题三] 接口调用成功,获取不到位置信息。

1.请确保已经安装了“HMS Core”,且为3.0.0.300及以上版本。

2.检查“HMS Core”应用定位权限是否打开。打开“设置" -> "应用" -> " 应用管理”找到“HMS Core”应用(不同版本的系统可能有差异,如果没找到"HMS Core",请点击”应用管理”界面右上角的菜单图标,再点击"显示系统进程"即可)。点击HMS Core图标,然后在“应用信息”界面打开“权限" -> "位置信息"中查看位置权限开启状态,确保“HMS Core”应用定位权限处于开启状态。如果是在EMUI10.0或更高版本的设备上,“HMS Core”的定位权限需要是“始终允许”。

3.确保待测试应用的定位权限处于开启状态。

4.确保下拉通知栏中的“位置信息”开关处于开启状态。

5.部分地区GPS或网络信号较弱,可能导致无法获取位置信息。

6.建议设备插卡使用,以便华为定位服务可以为您提供更精确的位置信息。


[问题四] 检查设备定位设置无误,使用getLastLocation接口,获取不到位置信息。

getLastLocation接口是从系统缓存中获取位置信息的,该接口不保证一定可以获取到位置信息。如果获取的位置信息为null,则可能是系统缓存已经被清除;此时先调用requestLocationUpdates接口获取位置信息以刷新缓存,再调用getLastLocation,即可以获取到位置信息。


[问题五] mock模式对正常定位的影响,如何判断当前位置是否为mock位置。    

通过setMockMode(boolean isMockMode)将位置模拟模式设置为true后,华为定位服务将不再使用GPS或网络位置,最终返回通过setMockLocation(Location mockLocation)设置的位置信息。需要注意的是,一旦设置为位置模拟模式,将影响该设备上所有使用华为定位服务的应用的定位功能。因此,当您不再需要进行位置模拟时,请通过setMockMode(boolean isMockMode)将位置模拟模式设置为false。

可以通过location.getExtra().getBoolean("mockLocation")的返回值来判断当前位置是否为mock位置,返回true则当前位置为mock位置,返回false则为真实位置。


[问题六] 如何根据接口返回值进行问题定位?

当调用华为定位服务的接口失败时,可以通过返回值初步判断问题原因。获得接口返回的Task对象,调用addOnFailureListener(),并重写onFailure(Exception e)方法,打印异常信息e.getMessage,异常信息中包含异常错误码和异常描述。具体的错误码含义请参考“通用错误码”。

[问题七] 地理围栏对手机型号和EMUI版本有哪些要求?

HMS Core 4.0.2支持到emui8及以上部分机型,4.0.4修复一些兼容性bug。推荐更新到4.0.4及以上版本。模拟机的支持情况不在如上范围内。


[问题八] 地理围栏是否受到环境制约,室内和室外是否都能使用?

因为当前下发的都是高精度的地理围栏,采用的是GPS/Cell作为位置获取方式,因此推荐使用室外围栏,精度更高。


[问题九] 地理围栏建议的半径设置范围是多少?

建议围栏最小半径在200米,小于200米不保证精度。


[问题十] 地理围栏添加个数是否有限制?

对于每个应用,最多可以下发100个围栏。


[问题十一] 活动识别对手机型号和EMUI版本有哪些要求 ?

活动识别支持的EMUI版本:EMUI9.1.1及以上。

活动识别支持的硬件平台:海思平台Kirin960及以上。

模拟机的支持情况不在如上范围内。


[问题十二] 如何提高活动识别的成功率?

活动识别的IN_VEHICLE、ON_BICYCLE模式使用到了cell信息,测试功能时建议插SIM卡并打开5G/4G/3G/2G网络开关。


[问题十三] 日志抓取办法。

调用华为定位服务接口无法获取位置信息,且根据上述步骤难以定位原因。可以抓取运行日志并联系技术支撑人员。

日志抓取办法如下:

1.adb连接手机,执行如下命令。

adb logcat –v time > D:\hwlocation.log

2.复现问题场景。

3.按Ctrl+C完成。

同时请您尽可能记录出现问题的设备型号、EMUI版本号、HMS Core版本号、集成的SDK版本号以及复现问题的步骤,以便技术人员可以更快的为您进行技术定位。


[问题十四] 支持最小的SDK版本和系统版本。     
minSdkVersion最低android版本

最低Emui 版本

194.43.0

[问题十五] 第三方APP获取位置信息时,出现HMS Core(APK)的定位权限申请界面。

定位过程中,由于第三方应用触发了HMS Core的的定位服务能力,为了保障第三方应用的定位功能正常运行,需要用户授权HMS Core位置权限,此权限的授予与第三方应用权限授予无关。如使用安卓Q版本终端,需要授予HMS Core后台获取位置权限(授权弹框中的始终允许)。


[问题十六] 为什么mock模式无法使用?

setMockMode(boolean isMockMode)仅支持华为手机EMUI5.0及以上版本。


[问题十七] 调用HMS Core接口时,返回错误码907135003,如何处理?

通过LocationService、ActivityIdentification创建Client实例时,传入的Context参数不是Activity,调用功能接口时,不会弹出升级提示引导界面,只会返回错误码907135003,此时需要手动升级HMS Core。如果需要拉起升级引导界面,建议传入Activity替代Context,创建Client实例。


[问题十八] 高精度定位获取有什么限制?

当前高精度定位只支持在P40系列上使用,并且只在中国大陆提供服务。