当前位置: 首页 > news >正文

鸿蒙-跨设备互通,设备互通提供跨设备的相机、扫描、图库访问能力,平板或2in1设备可以调用手机的相机、扫描、图库等功能。

跨设备互通

跨设备互通提供跨设备的相机、扫描、图库访问能力,平板或2in1设备可以调用手机的相机、扫描、图库等功能。

在这里插入图片描述

约束与限制

需同时满足以下条件,才能使用该功能:

  • 设备限制

    • 本端设备:HarmonyOS版本为HarmonyOS NEXT及以上的平板或2in1设备。
    • 远端设备:HarmonyOS版本为HarmonyOS NEXT及以上、具有相机能力的手机或平板设备。
  • 使用限制

    • 双端设备需要登录同一华为账号。

    • 跨设备互通API支持根据特定调用策略调用设备。调用策略:2in1设备可以调用平板和手机,平板可以调用手机,同类型设备不可调用。

    • 双端设备需要打开WLAN和蓝牙开关。

      条件允许时,建议双端设备接入同一个局域网,可提升唤醒相机的速度。

接口说明

在开发具体功能前,请先查阅参考文档。

接口名描述
createCollaborationServiceMenuItems设备列表选择器,用于获取组网内具有对应相机能力的设备列表。
CollaborationServiceStateDialog弹窗组件,用于提示对端相机拍摄状态。

开发步骤

  1. 在Menu中调用createCollaborationServiceMenuItems添加设备列表选择器,在菜单项内显示设备列表。

    说明

    在调用createCollaborationServiceMenuItems前,需了解:

    • 该方法需要在Menu组件内调用。
    • 该方法是自定义构建函数,您在使用前需要先了解@Builder。
  2. 传入Array类型的CollaborationServiceFilter枚举值即可使用对应能力,目前支持ALL、TAKE_PHOTO、SCAN_DOCUMENT、IMAGE_PICKER。(即目前只支持相机拍照、图库、扫描,所以为了后续又加入更多的功能这块我们选择ALL)

    @Builder  
    MyTestMenu() {  Menu() {                    createCollaborationServiceMenuItems([CollaborationServiceFilter.ALL])}}
    
  3. 在build方法中添加弹窗组件CollaborationServiceStateDialog,用于提示远端相机拍摄状态和回传数据,需要实现其中的onState方法。CollaborationServiceStateDialog是全局的提示框,不会对原有布局产生影响,下图为唤起的弹窗。

    在这里插入图片描述

  4. 为弹窗组件绑定和实现onState方法,用于接收和处理照片数据。

    回调函数的传入参数stateCode是完成状态,buffer是回传的图片数据,可通过状态和图片数据结合自身的业务逻辑实现onState方法。

    doInsertPicture方法为自定义方法,可以自定义主要用来接受回传的图片数据buffer,然后里面可以写自己的一些业务逻辑

    CollaborationServiceStateDialog({onState: (stateCode: number, bufferType: string, buffer: ArrayBuffer):void => this.doInsertPicture(stateCode, bufferType, buffer)
    })
    

    详细步骤

    示例代码如下:

import {createCollaborationServiceMenuItems,CollaborationServiceStateDialog,CollaborationServiceFilter
} from '@kit.ServiceCollaborationKit';
import { image } from '@kit.ImageKit';
import { hilog } from '@kit.PerformanceAnalysisKit';@Entry
@Component
struct Index {@BuilderMyTestMenu() {Menu() {createCollaborationServiceMenuItems([CollaborationServiceFilter.ALL])}}build() {Column({ space: 20 }) {CollaborationServiceStateDialog({onState: (stateCode: number, bufferType: string, buffer: ArrayBuffer): void => this.doInsertPicture(stateCode, bufferType, buffer)})Button('使用远端设备进行拍照').type(ButtonType.Normal).borderRadius(10).bindMenu(this.MyTestMenu)}.padding(20).width('100%').alignItems(HorizontalAlign.Center)}doInsertPicture(stateCode: number, bufferType: string, buffer: ArrayBuffer): void {//自己的业务逻辑}
}
http://www.xdnf.cn/news/6445.html

相关文章:

  • 【VSCode】在 VSCode 中运行 HTML 页面并通过 HTTPS 访问
  • 在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)
  • 发现“横”字手写有难度,对比两个“横”字
  • CSS3笔记
  • 小知识合集 慢慢更新
  • vue,uniapp解决h5跨域问题
  • uniapp打包IOS私钥证书过期了,如何在非mac系统操作
  • PDK中technology file从tf格式转换为lef格式
  • 【AI插件开发】Notepad++ AI插件开发实践:支持配置界面
  • 双轮驱动能源革命:能源互联网与分布式能源赋能工厂能效跃迁
  • 在Ubuntu系统中安装和升级RabbitVCS
  • 【教程】无视硬件限制强制升级Windows 11
  • 《数据结构之美--链表oj练习》
  • 2026《数据结构》考研复习笔记三(C++高级教程)
  • 「数据可视化 D3系列」入门第十章:饼图绘制详解与实现
  • 《实战AI智能体》——邮件转工单的AI自动化
  • 「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现
  • 设计模式 --- 装饰器模式
  • 通过 Zotero 的样式编辑器(Style Editor)自定义文献引用和参考文献列表的格式
  • 在阿里云虚拟主机上启用WordPress伪静态
  • Redis 的指令执行方式:Pipeline、事务与 Lua 脚本的对比
  • HTTP:九.WEB机器人
  • 探索 HumanoidBench:类人机器人学习的新平台
  • 甘果桌面tv版下载-甘果桌面安卓电视版使用教程
  • OpenAI 34页最佳构建Agent实践
  • Python(23)Python异常处理完全指南:从防御到调试的工程实践
  • 使用 Vue 开发登录页面的完整指南
  • 解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)
  • 数据库原理及应用mysql版陈业斌实验四
  • 若依同步企业微信架构及ACTIVITI