【每日学点鸿蒙知识】低功耗蓝牙、指纹识别认证、读取raw文件示例、CommonEvent是否跨线程、定位参数解释等

1、HarmonyOS next系统,如何判断设备是否支持低功耗蓝牙?

可以通过 canIUse(“SystemCapability.Communication.Bluetooth.Core”) 判断是否支持。关于canIUse相关用法可参考官网文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-syscap-V5
系统能力(SystemCapability,简称SysCap),指操作系统中每一个相对独立的特性。不同的设备对应不同的系统能力集,每个系统能力对应一个或多个API。开发者可根据系统能力来判断是否可以使用某接口。

canIUse(syscap: string): boolean
参数:

参数名类型必填说明
syscapstring待查询的系统能力名称。

返回值:

类型说明
boolean系统能力查询结果,true表示系统具备该能力,false表示系统不具备。
示例
import { geoLocationManager } from '@kit.LocationKit'
import { BusinessError } from '@kit.BasicServicesKit';

const isLocationAvailable = canIUse('SystemCapability.Location.Location.Core');
if (isLocationAvailable) {
  geoLocationManager.getCurrentLocation((err: BusinessError, location: geoLocationManager.Location) => {
      if (err) {
          console.error('err=' + JSON.stringify(err));
      }
      if (location) {
          console.log('location=' + JSON.stringify(location));
      }
  });
} else {
  console.log('Location not by this device.');
}

2、HarmonyOS现在支持指纹识别认证吗?

想在应用账号密码登录的基础上,增加指纹识别登录,有对应的能力吗?

参见User Authentication Kit的切换自定义认证开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/apply-custom-authentication-V5

统一用户认证框架提供了切换业务自定义认证机制。如果设备厂商自定义了其他认证能力对接到统一用户认证框架,应用开发者可以切换到自定义认证的方式。

例如,在支付场景中,如果厂商自定义了支付密码认证的方式,当调用系统人脸或指纹认证失败后,用户可以选择切换支付密码认证。

支付密码认证不属于系统认证能力,因此业务在发起认证时需要传入导航键的显式信息,如“使用支付密码”,这样用户看到的认证界面便会包含一个“使用支付密码”的按钮。

当用户点击该按钮,发起认证的业务应用便会收到统一用户认证框架返回的一个特殊认证结果,提示业务系统认证结束,需要拉起业务自定义的认证界面。这样,用户在点击“使用支付密码”按钮后,便会看到系统认证控件消失,显示出业务自定义的支付密码认证界面。
![[【每日学点鸿蒙知识】24.09.29-1.png]]

Kit支持生物特征认证+业务自定义认证方式,指纹+应用账号密码认证属于其中一种。应用也可以在账号认证界面上集成指纹的嵌入式认证控件,详见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/user-auth-icon-V5
主要用于提供应用界面上展示的人脸、指纹认证图标,具体功能如下:

  1. 提供嵌入式人脸、指纹认证控件图标,可被应用集成。
  2. 支持自定义图标的颜色和大小,但图标样式不可变更。
  3. 点击控件图标后可拉起系统弹窗式人脸、指纹认证控件。

当前支持使用认证控件的认证类型包括:

  • 人脸认证
  • 指纹认证
  • 人脸+锁屏密码认证
  • 指纹+锁屏密码认证
  • 人脸+指纹+锁屏密码认证

![[【每日学点鸿蒙知识】24.09.29.png]]

3、HarmonyOS 读取raw文件参考示例?

// 这里使用getRawFileContent的方式读取测试文本,并将文本内容打印出来
async loadFromRawFile(context: Context, rawFileName: string): void {
  let rawFileRes: Uint8Array = await context.resourceManager.getRawFileContent(rawFileName);
  let bufferLike: ArrayBufferLike = rawFileRes.buffer;
  let rawFileBuffer: ArrayBuffer = bufferLike.slice(0, bufferLike.byteLength);
  log.info('loadFromRawFile: ' + rawFileBuffer.byteLength);
  const decoder = util.TextDecoder.create('"utf-8"');
  const str = decoder.decodeWithStream(new Uint8Array(rawFileBuffer));
  log.info('loadFromRawFile ' + str);
}
loadRawFd(context: Context, rawFileName: string) {
  context.resourceManager.getRawFd(rawFileName, (err: BusinessError, value: resourceManager.RawFileDescriptor) => {
    let fd = value.fd;
    let offset = value.offset;
    let fdLength = value.length;
    log.info('fd: ' + value.fd + ', offset: ' + offset + ', length: ' + fdLength);
    let stream: fs.Stream = fs.fdopenStreamSync(fd, 'r');

    let stringBuffer = new ArrayBuffer(128); // 每次默认只装128个长度
    let currentLength = 0; // 当前已读取长度
    let readLength = 128; // 每次读取长度,默认128的长度
    while (currentLength < fdLength) {
      readLength = (fdLength - currentLength > 128) ? 128 : (fdLength - currentLength)
      stringBuffer = new ArrayBuffer(readLength);
      stream.readSync(stringBuffer, { offset: offset + currentLength, length: readLength });
      let decoder = util.TextDecoder.create('"utf-8"');
      let str = decoder.decodeWithStream(new Uint8Array(stringBuffer));
      log.info(str); // 解析成字符串并打印出日志
      currentLength += readLength; // 读取起始点
    }

    context.resourceManager.closeRawFdSync(rawFileName); // 文件读取完后,需要使用该接口将FD关掉
    // fs.closeSync(fd); // 不使用该API,已给研发提诉求优化指导。
    stream.closeSync();
  })
}

4、HarmonyOS CommonEvent能否跨线程?

比如一个sdk,做了一个cpu密集操作,执行的过程中,不断给宿主模块发送事件,通知更新进度或者其他什么状态。本质是,sdk感知不到外部环境,在线程中执行任务,过程中需要同步状态给外部

公共事件支持跨线程,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/common-event-overview-V5

公共事件示意图:
![[【每日学点鸿蒙知识】24.09.29-2.png]]

5、HarmonyOS 调定位各参数含义?

1、调用geoLocationManager.getCurrentLocation(request?: CurrentLocationRequest)获取定位位置。可变参数request可配置priority、scenario、maxAccuracy,timeoutMs。如果不传request,直接调geoLocationManager.getCurrentLocation(),那么定位的那些配置默认分别都是怎么样的?
2、注册位置变化监听的api中参数含义咨询:

let requestInfo:geoLocationManager.LocationRequest = {'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX, 'timeInterval': 0, 'distanceInterval': 0, 'maxAccuracy': 0};
geoLocationManager.on('locationChange', requestInfo, locationChange);
  • distanceInterval:这个是指两次位置偏差超过distanceInterval米后会回调吗,还是什么?
  • maxAccuracy:精度信息,具体表示什么含义意思?
    定位回调信息additions中有个provider,看似像是定位来源,该provider共有哪几种值,分别是什么含义?

问题1:
priority、scenario、maxAccuracy等可以参考

  • https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5
  • https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5

timeoutMs目前默认值为30秒。
如果不传request,直接调geoLocationManager.getCurrentLocation(),那么定位的那些配置都会是默认配置,priority是First_Fix。

问题2:

  • distanceInterval:距离间隔,表示监听到两次位置偏差超过distanceInterval米后会回调。
  • maxAccuracy:精度信息,筛选展示中心点maxAccuracy米内的坐标。
    定位回调信息additions中有个provider,目前只提供network这一种类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像处理-Ch7-小波函数

个人博客&#xff01;无广告观看&#xff0c;因为这节内容太多了&#xff0c;有点放不下&#xff0c;分了三节 文章目录 多分辨率展开(Multi-resolution Expansions)序列展开(Series Expansions)尺度函数(Scaling Function)例&#xff1a;哈尔尺度函数(Haar scaling func)多分…

本地小主机安装HomeAssistant开源智能家居平台打造个人AI管家

文章目录 前言1. 添加镜像源2. 部署HomeAssistant3. HA系统初始化配置4. HA系统添加智能设备4.1 添加已发现的设备4.2 添加HACS插件安装设备 5. 安装cpolar内网穿透5.1 配置HA公网地址 6. 配置固定公网地址 前言 大家好&#xff01;今天我要向大家展示如何将一台迷你的香橙派Z…

Rocky Linux下安装meld

背景介绍&#xff1a; meld是一款Linux系统下的用于 文件夹和文件的比对软件&#xff0c;非常常用&#xff1b; 故障现象&#xff1a; 输入安装命令后&#xff0c;sudo yum install meld&#xff0c;报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…

数据结构与算法之动态规划: LeetCode 337. 打家劫舍 III (Ts版)

打家劫舍 III https://leetcode.cn/problems/house-robber-iii/description/ 描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连一番侦察之后&#xff0c;聪明的小…

chatwoot 开源客服系统搭建

1. 准备开源客服系统&#xff08;我是用的Chatwoot &#xff09; 可以选择以下开源客服系统作为基础&#xff1a; Chatwoot: 功能强大&#xff0c;支持多渠道客户对接&#xff0c;&#xff08;支持app&#xff0c;web&#xff09;。Zammad: 现代的开源工单系统。FreeScout: 免…

sentinel-请求限流、线程隔离、本地回调、熔断

请求限流&#xff1a;控制QPS来达到限流的目的 线程隔离&#xff1a;控制线程数量来达到限流的目录 本地回调&#xff1a;当线程被限流、隔离、熔断之后、就不会发起远程调用、而是使用本地已经准备好的回调去提醒用户 服务熔断&#xff1a;熔断也叫断路器&#xff0c;当失败、…

鸿蒙开发-ArkTS中使用Path组件

在ArkTS中使用Path组件&#xff0c;可以按照以下步骤进行&#xff1a; 一、了解Path组件 Path组件用于根据绘制路径生成封闭的自定义形状。该组件从API Version 7开始支持&#xff0c;并随着后续版本的更新可能增加新的功能。Path组件支持多种属性和方法&#xff0c;用于定义…

高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程

前言 Nginx WebUI 是一个为 Nginx 提供图形化管理界面的工具。通过 WebUI&#xff0c;用户可以轻松管理 Nginx 配置&#xff0c;而无需直接编辑配置文件&#xff0c;尤其适合新手用户和频繁修改配置的场景。 官网文档&#xff1a;nginxWebUI - 文档 本文将分享为什么选择 ngin…

Linux网络 | 理解Web路径 以及 实现一个简单的helloworld网页

前言&#xff1a;本节内容承接上节课的http相关的概念&#xff0c; 主要是实现一个简单的接收http协议请求的服务。这个程序对于我们理解后面的http协议的格式&#xff0c;报头以及网络上的资源的理解&#xff0c; 以及本节web路径等等都有着重要作用。 可以说我们就用代码来理…

2.5万字 - 用TensorFlow和PyTorch分别实现五种经典模型

在深度学习领域&#xff0c;TensorFlow和PyTorch是两大广泛使用的框架&#xff0c;各有其独特的特性和优势。随着人工智能技术的快速发展&#xff0c;越来越多的开发者需要熟练掌握这两种工具&#xff0c;以便在实际项目中选择适合的框架进行高效开发。 目录 入门友好介绍 Te…

【C++】2029:【例4.15】水仙花数

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;我的做法思路分析优势不足之处 &#x1f4af;老师的做法思路分析优势不足 &#x1f4af;对比和优化实现方式对比优化思路和操作1. 直接分解数字的各位…

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中具有广泛的应用前景。如有滤波、导航方面的代码定制需求,可通过文末卡片联系作者获得帮助 文章目录 结合LSTM和UKF的背景结合LSTM和UKF的优势应用实例研究现状MATLAB代码示例结论结合LSTM和…

Android14 CTS-R6和GTS-12-R2不能同时测试的解决方法

背景 Android14 CTS r6和GTS 12-r1之后&#xff0c;tf-console默认会带起OLC Server&#xff0c;看起来olc server可能是想适配ATS(android-test-station)&#xff0c;一种网页版可视化、可配置的跑XTS的方式。这种网页版ATS对测试人员是比较友好的&#xff0c;网页上简单配置下…

告别Kibana:Elasticsearch 桌面客户端的新变革

告别Kibana&#xff1a;Elasticsearch 桌面客户端的新变革 在大数据处理与分析领域&#xff0c;Elasticsearch 及其相关技术的应用日益广泛。长期以来&#xff0c;Kibana 在数据可视化与查询管理方面占据重要地位&#xff0c;但随着技术的不断发展&#xff0c;用户对于更高效、…

HTML5实现喜庆的新年快乐网页源码

HTML5实现喜庆的新年快乐网页源码 前言一、设计来源1.1 主界面1.2 关于新年界面1.3 新年庆祝活动界面1.4 新年活动组织界面1.5 新年祝福订阅界面1.6 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现喜庆的新年快乐网页源码&#xff0c;春节新年网…

【广州计算机学会、广州互联网协会联合主办 | ACM独立出版 | 高录用】第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)

第四届大数据、信息与计算机网络国际学术会议&#xff08;BDICN 2025&#xff09;定于2025年01月10-12日在中国广州举行。会议旨在为从事“大数据”、“计算机网络”与“信息”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发…

C语言函数栈帧的创建和销毁

文章目录 一、寄存器二、函数栈帧的创建和销毁1.什么是函数栈帧&#xff1f;2.案例代码-讲解3.总结函数栈帧 一、寄存器 寄存器(Register)是中央处理机、主存储器和其他数字设备中某些特定用途的存储单元。寄存器是集成电路中非常重要的一种存储单元&#xff1b;其可用来暂存指…

我的博客年度之旅:感恩、成长与展望

目录 感恩有你 技能满点 新年新征程 嘿&#xff0c;各位技术大佬、数码潮咖还有屏幕前超爱学习的小伙伴们&#xff01;当新年的钟声即将敲响&#xff0c;我们站在时光的交汇点上&#xff0c;回首过往&#xff0c;满心感慨&#xff1b;展望未来&#xff0c;豪情满怀。过去的这…

【数据库初阶】MySQL数据类型

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…

webrtc 源码阅读 make_ref_counted模板函数用法

目录 1. 模板参数解析 1.1 typename T 1.2 typename... Args 1.3 typename std::enable_if::value, T>::type* nullptr 2. scoped_refptr 3. new RefCountedObject(std::forward(args)...); 4. 综合说明 5.在webrtc中的用法 5.1 peerConnectionFactory对象的构建过…