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

鸿蒙开发(NEXT/API 12)【跨设备互通NDK开发】协同服务

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

说明

本章节以拍照为例展开介绍,扫描、图库功能的使用与拍照类似。

用户在平板或2in1设备上使用富文本类编辑应用(如:备忘录、邮件、笔记等)时,想要拍摄一些照片作为素材,但是当前设备拍摄不太方便。通过跨设备互通-拍照,用户可以在当前设备的应用中指定平板或手机设备,并打开平板或手机的相机来拍摄所需的素材。通过手机或者平板设备拍摄,移动更便利、取景更灵巧、相机能力也更强大。拍摄的照片将实现快速回传到平板或2in1设备的应用中,帮助用户高效完成图文并茂的文档设计。

如果同一组网下有多台手机或平板设备,用户可以选择不同的设备进行拍摄。

1

运作机制

基于分布式协同框架面向跨设备拍照的业务场景,为您提供了 [HMS_ServiceCollaboration_GetCollaborationDeviceInfos](列表设备接口)、[HMS_ServiceCollaboration_StartCollaboration](跨设备互通拉起)和 [HMS_ServiceCollaboration_StopCollaboration](终止跨设备互通)三个接口。只需要调用这三个接口,即可完成跨端拍照,无需关注分布式场景下数据传输、指令控制等具体细节。

  1. 系统分布式协同框架跨设备自动建链

    通过系统的分布式协同框架,同账号下的本端设备(2in1设备/平板)与远端设备(手机/平板)自动建立连接。系统将自动完成设备的发现、连接、认证等流程,通过[HMS_ServiceCollaboration_GetCollaborationDeviceInfos]接口提供可用的具有相机、扫描和图库能力的远端设备信息,通过[HMS_ServiceCollaboration_StartCollaboration]拉起对应跨设备互通能力,通过[HMS_ServiceCollaboration_StopCollaboration]终止跨设备互通能力。

  2. 用户使用远端设备拍照

    1. 用户使用远端设备完成拍照并确认,照片将回传到本端设备的应用,完成整个流程。
    2. 远端设备将自动退出相机界面,回到初始状态。

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

场景介绍

您通过此能力实现跨设备交互,可以使用其他设备的相机、扫描和图库功能。

约束与限制

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

  • 设备限制

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

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

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

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

接口说明

接口名描述
[HMS_ServiceCollaboration_GetCollaborationDeviceInfos]获取跨设备互通可用的设备信息。
[HMS_ServiceCollaboration_StartCollaboration]拉起跨设备互通能力。
[HMS_ServiceCollaboration_StopCollaboration]取消跨设备互通能力。

开发步骤

1.引入头文件

#include "service_collaboration/service_collaboration_api.h"

2.编写CMakeList.txt

find_library(# Sets the name of the path variable.service_collaboration-lib# Specifies the name of the NDK library that# you want CMake to locate.libservice_collaboration_ndk.z.so
)
target_link_libraries(entry PUBLIC${service_collaboration-lib}
)

3.编写Code调用接口

#include "service_collaboration/service_collaboration_api.h"
#include <thread>static int32_t OnEventProc(ServiceCollaborationEventCode code, uint32_t extraCode)
{return 0;
}
static int32_t OnDataCallbackProc(ServiceCollaborationEventCode code, ServiceCollaborationDataType dataType, uint32_t dataSize, char* data)
{return 0;
}
int main(int argc, char* argv[])
{int two = 2;int three = 3;int filter = 1;const int size = 3;int shouldCancel = 0;// 构建所需跨设备互通能力,并调用HMS_ServiceCollaboration_GetCollaborationDeviceInfos接口获取设备信息ServiceCollaborationFilterType serviceFileterTypes[size] = {TAKE_PHOTO, SCAN_DOCUMENT, IMAGE_PICKER};ServiceCollaboration_CollaborationDeviceInfoSets* info = HMS_ServiceCollaboration_GetCollaborationDeviceInfos(3, serviceFileterTypes);// 构建callback回调ServiceCollaboration_SelectInfo taskInfo = { TAKE_PHOTO, { 0 } };for (uint32_t i = 0; i < info->size; i++) {ServiceCollaboration_CollaborationDeviceInfo *deviceInfo =(ServiceCollaboration_CollaborationDeviceInfo *)&(info->deviceInfoSets[i]);if (filter == 1) {taskInfo.serviceFilterType = TAKE_PHOTO;}if (filter == two) {taskInfo.serviceFilterType = SCAN_DOCUMENT;}if (filter == three) {taskInfo.serviceFilterType = IMAGE_PICKER;}std::memcpy(taskInfo.deviceNetworkId, deviceInfo->deviceNetworkId, COLLABORATIONDEVICEINFO_DEVICENETWORKID_MAXLENGTH-1);}ServiceCollaborationCallback callback = {.OnEvent = OnEventProc, .OnDataCallback = OnDataCallbackProc};// 传入拍照参数、callback回调并调用HMS_ServiceCollaboration_StartCollaboration接口uint32_t id = HMS_ServiceCollaboration_StartCollaboration(&taskInfo, &callback);std::this_thread::sleep_for(std::chrono::seconds(three));if (shouldCancel) {// 三秒后主动调用HMS_ServiceCollaboration_StopCollaboration关闭跨设备互通int32_t ret = HMS_ServiceCollaboration_StopCollaboration(id);}
}

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1


http://www.mrgr.cn/news/33709.html

相关文章:

  • MySQL LOAD DATA INFILE导入数据报错
  • 分布式光伏智慧平台建设现场 系统集成商如何盈利
  • java项目-jenkins任务的创建和执行
  • 关于Unity使用LookAt时为什么不能旋转
  • Spring Cloud Eureka 服务注册与发现
  • 1 图的搜索 奇偶剪枝
  • 【机器学习】13-决策树2——决策树生成、剪枝
  • SystemExit: 系统退出异常的完美解决方法⚙️
  • 从示例的角度介绍async copy,剖析一个 cuda sample case Samples/3/tf32TensorCoreGemm
  • 智能工作伙伴:AI助理与企业知识库的深度融合
  • 【多维动态规划】64. 最小路径和(面试真题+面试官调整后的题目)
  • 重生之我们在ES顶端相遇第16 章 - Lucene 写入流程
  • 【AI创作组】Matlab简介
  • re题(38)BUUCTF-[FlareOn6]Overlong
  • 【TS】加深TS理解的开发实战示例代码
  • C++特性—左值与右值
  • Java接口详解
  • 【MySQL 03】表的操作
  • 上海数科(北京)律师事务所开业庆典圆满举行
  • 网络层协议 —— IP协议
  • C++标准库容器类——string类
  • 项目集成sharding-jdbc
  • 【鼠标滚轮专用芯片】KTH57913D 霍尔位置传感器
  • 作用域与作用域链
  • fas sklxj siaoj oisaj
  • 【系统架构设计师】论文模板:快速写好一篇架构设计师论文