使用定位服务需要添加依赖:
- dependencies {
- implementation 'com.huawei.hms:location:{version}'
- }
目前华为定位服务仅支持华为手机。
使用定位服务需要添加依赖:
- dependencies {
- implementation 'com.huawei.hms:location:{version}'
- }
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接口是从系统缓存中获取位置信息的,该接口不保证一定可以获取到位置信息。如果获取的位置信息为null,则可能是系统缓存已经被清除;此时先调用requestLocationUpdates接口获取位置信息以刷新缓存,再调用getLastLocation,即可以获取到位置信息。
通过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,异常信息中包含异常错误码和异常描述。具体的错误码含义请参考“通用错误码”。
HMS Core 4.0.2支持到emui8及以上部分机型,4.0.4修复一些兼容性bug。推荐更新到4.0.4及以上版本。模拟机的支持情况不在如上范围内。
因为当前下发的都是高精度的地理围栏,采用的是GPS/Cell作为位置获取方式,因此推荐使用室外围栏,精度更高。
建议围栏最小半径在200米,小于200米不保证精度。
对于每个应用,最多可以下发100个围栏。
活动识别支持的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版本号以及复现问题的步骤,以便技术人员可以更快的为您进行技术定位。
| minSdkVersion | 最低android版本 | 最低Emui 版本 |
| 19 | 4.4 | 3.0 |
定位过程中,由于第三方应用触发了HMS Core的的定位服务能力,为了保障第三方应用的定位功能正常运行,需要用户授权HMS Core位置权限,此权限的授予与第三方应用权限授予无关。如使用安卓Q版本终端,需要授予HMS Core后台获取位置权限(授权弹框中的始终允许)。
setMockMode(boolean isMockMode)仅支持华为手机EMUI5.0及以上版本。
通过LocationService、ActivityIdentification创建Client实例时,传入的Context参数不是Activity,调用功能接口时,不会弹出升级提示引导界面,只会返回错误码907135003,此时需要手动升级HMS Core。如果需要拉起升级引导界面,建议传入Activity替代Context,创建Client实例。
当前高精度定位只支持在P40系列上使用,并且只在中国大陆提供服务。