评论

收藏

[Android] 鸿蒙手表定位功能Demo体验,适用儿童、老年和外出旅游安全市场

移动开发 移动开发 发布于:2022-03-18 15:12 | 阅读数:470 | 评论:0

针对儿童和老人,可穿戴的智能手表用处很大。市场也有许多类似的产品,支持接打电话、支付扫码、定位等功能,属于新兴的商业机会。依托华为品牌,鸿蒙手表也致力为用户打造精品的、产品质量佳、可穿戴的智能体验。对此,HMS Core 定位服务(Location Kit)可以提供三个主要能力,包括融合定位、活动识别和地理围栏。接下来,小编邀请开发者们通过简单快速的几步,体验定位服务在鸿蒙手表上开发的定位功能。
一、定位服务的优势和限制

  • 定位低功耗:利用芯片实现地理围栏,功耗更低。
  • 定位高精度:优化城市峡谷下道路两侧的定位准确率,准确率高。基于RTK(Real - time kinematic)技术,实现开阔地亚米级高精定位能力。
  • 最新版本SDK需要用户手机上安装HMS Core(APK)6.0.0以上版本。若未安装,或安装了其他版本的HMS Core(APK),功能可以正常使用,但不支持版本自动升级。
  • HarmonyOS通过数字证书和Profile文件来对应用进行管控,只有签名过的HarmonyOS Ability Package(以下简称“HAP”)才被允许安装到设备上运行。
DSC0000.jpg

二、Demo介绍
为了让开发者更好的了解鸿蒙手表定位功能的实现,这里提供了一个简单的集成案例,邀请大家用简单的代码运行Demo。代码能力包括请求回调定位功能,获取缓存定位信息,查询定位信息是否可用及检查设置权限等
三、开发实战
下面为开发者们介绍如何根据源代码将这个Demo运行起来,以便于了解实现细节。
开发准备
1.工具准备
测试设备  HarmonyOS 2.0及以上的华为智能手表
开发工具  DevEco Studio 2.1.0.201及以上
2.开发前准备

  • 注册成为华为开发者,创建一个应用
参考定位服务开发准备在华为应用市场创建一个您的应用。

  • 生成数字证书和Profile文件
详细步骤包括申请应用调试证书、注册调试设备和申请调试Profile ,配置签名信息。

  • 生成签名证书指纹 ,配置签名证书指纹。
  • 集成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的混淆配置。
运行示例应用效果展示
DSC0001.jpg

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/introduction-0000001050706106?ha_source=hms1)
华为开发者联盟官网:
[https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/harmonyos-introduction-0000001121618904?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](https://github.com/HMS-Core/hms-location-demo-harmonyos)
解决集成问题请到Stack Overflow:
[https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest](https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest)
**了解更多详情>>**
访问[华为开发者联盟官网](http://developer.huawei.com/consumer/cn/hms?ha_source=hms1)  
获取[开发指导文档](http://developer.huawei.com/consumer/cn/doc/development?ha_source=hms1)  
华为移动服务开源仓库地址:[GitHub](http://github.com/HMS-Core)、[Gitee](http://gitee.com/hms-core)
**关注我们,第一时间了解 HMS Core 最新技术资讯~**

   
   
   
                        

关注下面的标签,发现更多相似文章