关于android:鸿蒙手表定位功能Demo体验适用儿童老年和外出旅游安全市场

34次阅读

共计 5090 个字符,预计需要花费 13 分钟才能阅读完成。

针对儿童和老人,可穿戴的智能手表用途很大。市场也有许多相似的产品,反对接打电话、领取扫码、定位等性能,属于新兴的商业机会。依靠华为品牌,鸿蒙手表也致力为用户打造精品的、产品质量佳、可穿戴的智能体验。对此,HMS Core 定位服务(Location Kit)能够提供三个次要能力,包含交融定位、流动辨认和天文围栏。接下来,小编邀请开发者们通过简略疾速的几步,体验定位服务在鸿蒙手表上开发的定位性能。

一、定位服务的劣势和限度

  1. 定位低功耗 :利用芯片实现天文围栏,功耗更低。
  2. 定位高精度 :优化城市峡谷下路线两侧的定位准确率,准确率高。基于 RTK(Real – time kinematic)技术,实现开阔地亚米级高精定位能力。
  3. 最新版本 SDK 须要用户手机上安装 HMS Core(APK)6.0.0 以上版本。若未装置,或装置了其余版本的 HMS Core(APK),性能能够失常应用,但不反对版本主动降级。
  4. 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"}
  1. 在代码中动静申请“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 最新技术资讯~

正文完
 0