共计 5090 个字符,预计需要花费 13 分钟才能阅读完成。
针对儿童和老人,可穿戴的智能手表用途很大。市场也有许多相似的产品,反对接打电话、领取扫码、定位等性能,属于新兴的商业机会。依靠华为品牌,鸿蒙手表也致力为用户打造精品的、产品质量佳、可穿戴的智能体验。对此,HMS Core 定位服务(Location Kit)能够提供三个次要能力,包含交融定位、流动辨认和天文围栏。接下来,小编邀请开发者们通过简略疾速的几步,体验定位服务在鸿蒙手表上开发的定位性能。
一、定位服务的劣势和限度
- 定位低功耗 :利用芯片实现天文围栏,功耗更低。
- 定位高精度 :优化城市峡谷下路线两侧的定位准确率,准确率高。基于 RTK(Real – time kinematic)技术,实现开阔地亚米级高精定位能力。
- 最新版本 SDK 须要用户手机上安装 HMS Core(APK)6.0.0 以上版本。若未装置,或装置了其余版本的 HMS Core(APK),性能能够失常应用,但不反对版本主动降级。
- HarmonyOS 通过数字证书和 Profile 文件来对利用进行管控,只有签名过的 HarmonyOS Ability Package(以下简称“HAP”)才被容许装置到设施上运行。
二、Demo 介绍
为了让开发者更好的理解鸿蒙手表定位性能的实现,这里提供了一个简略的集成案例,邀请大家用简略的代码运行 Demo。 代码能力包含申请回调定位性能,获取缓存定位信息,查问定位信息是否可用及查看设置权限等 。
三、开发实战
上面为开发者们介绍如何依据源代码将这个 Demo 运行起来,以便于理解实现细节。
开发筹备
1. 工具筹备
测试设施 HarmonyOS 2.0 及以上的华为智能手表
开发工具 DevEco Studio 2.1.0.201 及以上
2. 开发前筹备
1) 注册成为华为开发者,创立一个利用
参考定位服务开发筹备在华为利用市场创立一个您的利用。
2) 生成数字证书和 Profile 文件
具体步骤包含申请利用调试证书、注册调试设施和申请调试 Profile , 配置签名信息。
3) 生成签名证书指纹,配置签名证书指纹。
4) 集成 HMS Core SDK
• 将 AGC 的 agconnect-services.json 文件下载到本地,并放利用级根目录“entry\src\main\resources\rawfile”门路下。
• 在文件头部申明下一行增加如下配置 apply plugin: ‘com.huawei.agconnect’. 我的项目级“build.gradle”文件,增加 Maven 仓地址和 agconnect 服务依赖。
buildscript {
repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/'}
// 配置 HMS Core SDK 的 Maven 仓地址
maven {url 'https://developer.huawei.com/repo/'}
jcenter()}
dependencies {
classpath 'com.huawei.ohos:hap:2.4.4.2'
// 增加 agconnect 服务依赖
classpath 'com.huawei.agconnect:agcp-harmony:1.1.0.300'
classpath 'com.huawei.ohos:decctest:1.2.4.0'
}
}
allprojects {
repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/'}
// 配置 HMS Core SDK 的 Maven 仓地址
maven {url 'https://developer.huawei.com/repo/'}
jcenter()}
}
• 利用级的 build.gradle 文件增加依赖(理论中依照须要设置版本号)或者在本地“libs”目录放在 Location Kit 的 har 包。
dependencies {
implementation 'com.huawei.hms:location-ohos:6.0.0.300'
// agconnect 依赖组件
implementation 'com.huawei.agconnect:agconnect-core-harmony:1.1.0.300'
}
• 如需混同代码 关上利用级根目录下的混同配置文件“proguard-rules.pro”,退出排除 HMS Core SDK 的混同配置。
运行示例利用成果展现
1. 申明零碎权限 在“config.json”文件中的“reqPermissions”字段中增加下列权限
采纳 HarmonyOS 提供了两种地位权限:ohos.permission.LOCATION(地位权限)和 ohos.permission.LOCATION_IN_BACKGROUND(后盾定位权限)。留神还须要网络权限。
"reqPermissions": [
{
"reason": "get Local Location",
"name": "ohos.permission.LOCATION",
"usedScene": {
"ability": ["com.huawei.codelab.MainAbility",],
"when": "always"
}
},
{"name": "ohos.permission.GET_NETWORK_INFO"},
{"name": "ohos.permission. LOCATION_IN_BACKGROUND"}
-
在代码中动静申请“ohos.permission.LOCATION”和“ohos.permission.LOCATION_IN_BACKGROUND”权限
// 以 location 权限为例 if (verifySelfPermission("ohos.permission.LOCATION") != IBundleManager.PERMISSION_GRANTED) {printLog(HiLog.INFO, TAG, "Self: LOCATION permission not granted!"); if (canRequestPermission("ohos.permission.LOCATION")) {printLog(HiLog.INFO, TAG, "Self: can request permission here"); requestPermissionsFromUser(new String[]{"ohos.permission.LOCATION"}, REQUEST_CODE); } else {printLog(HiLog.WARN, TAG, "Self: enter settings to set permission"); } } else {printLog(HiLog.INFO, TAG, "Self: LOCATION permission granted!"); }
要害代码阐明
1. 创立定位服务客户端
在基类 BaseAbilitySlice 中的 onStart() 办法中创立一个 FusedLocationProviderClient 实例,通过该实例调用定位相干接口。
public FusedLocationProviderClient fusedLocProviderClient;
@Override
protected void onStart(Intent intent) {super.onStart(intent);
fusedLocProviderClient = new FusedLocationClient(this);
}
2. 查看设施定位设置
调用 LocationRequest 设置定位申请参数(包含设置地位更新的距离(毫秒:单位),权重,返回地址信息的语言等),并在申请回调之前调用定位服务查看定位相干设置。
private void checkLocationSettings() {LocationRequest locationRequest = new LocationRequest();
locationRequest.setPriority(100);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
LocationSettingsRequest request =
builder.addLocationRequest(locationRequest).setAlwaysShow(false).setNeedBle(false).build();
settingsClient.checkLocationSettings(request)
.addOnSuccessListener(response -> {// 设置胜利定位条件})
.addOnFailureListener(exp -> {// 设置不满足定位条件});
}
3. 定位性能相干实现步骤
调用 requestLocationUpdates() 进行继续定位。
fusedLocProviderClient.requestLocationUpdates(locationRequest, locationCallback)
.addOnSuccessListener(var -> {// 接口调用胜利的解决})
.addOnFailureListener(e -> {// 接口调用失败的解决});
调用 removeLocationUpdates() 进行地位更新。
// 留神:进行地位更新时,mLocationCallback 与 requestLocationUpdates() 中的 LocationCallback 参数为同一对象。fusedLocProviderClient.removeLocationUpdates(locationCallback)
.addOnSuccessListener(var -> {// 接口调用胜利的解决})
.addOnFailureListener(e -> {// 接口调用失败的解决});
定义地位更新回调。
LocationCallback locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {if (locationResult != null) {// 解决地位回调后果}
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {super.onLocationAvailability(locationAvailability);
if (locationAvailability != null) {// 解决地位状态}
}
};
相干参数阐明
1. 设置定位类型,如果申请 GNSS 地位,则值为 100;如申请网络地位,则值为 102 或 104;如不须要被动申请地位,仅需被动接管地位,则值为 105。
2. 定位设置的语言。以后仅反对 EN 和 CN。
3. setNumUpdates 申请地位的回调次数,如果值为 3 时,则只回调 3 次后果给客户端。如果想要始终继续回调尽量应用默认值。
欲了解更多 HMS Core 定位服务详情,请参阅:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/introduction-0000001050706106?ha_source=hms1
华为开发者联盟官网:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/harmonyos-introduction-0000001121618904?ha_source=hms1
下载 demo 和示例代码请到 Github:
https://github.com/HMS-Core/hms-location-demo-harmonyos
解决集成问题请到 Stack Overflow:
https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
理解更多详情 >>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~