鸿蒙开发(NEXT/API 12)【跨设备互通NDK开发】协同服务
跨设备互通提供跨设备的相机、扫描、图库访问能力,平板或2in1设备可以调用手机的相机、扫描、图库等功能。
说明
本章节以拍照为例展开介绍,扫描、图库功能的使用与拍照类似。
用户在平板或2in1设备上使用富文本类编辑应用(如:备忘录、邮件、笔记等)时,想要拍摄一些照片作为素材,但是当前设备拍摄不太方便。通过跨设备互通-拍照,用户可以在当前设备的应用中指定平板或手机设备,并打开平板或手机的相机来拍摄所需的素材。通过手机或者平板设备拍摄,移动更便利、取景更灵巧、相机能力也更强大。拍摄的照片将实现快速回传到平板或2in1设备的应用中,帮助用户高效完成图文并茂的文档设计。
如果同一组网下有多台手机或平板设备,用户可以选择不同的设备进行拍摄。
运作机制
基于分布式协同框架面向跨设备拍照的业务场景,为您提供了 [HMS_ServiceCollaboration_GetCollaborationDeviceInfos](列表设备接口)、[HMS_ServiceCollaboration_StartCollaboration](跨设备互通拉起)和 [HMS_ServiceCollaboration_StopCollaboration](终止跨设备互通)三个接口。只需要调用这三个接口,即可完成跨端拍照,无需关注分布式场景下数据传输、指令控制等具体细节。
-
系统分布式协同框架跨设备自动建链
通过系统的分布式协同框架,同账号下的本端设备(2in1设备/平板)与远端设备(手机/平板)自动建立连接。系统将自动完成设备的发现、连接、认证等流程,通过[HMS_ServiceCollaboration_GetCollaborationDeviceInfos]接口提供可用的具有相机、扫描和图库能力的远端设备信息,通过[HMS_ServiceCollaboration_StartCollaboration]拉起对应跨设备互通能力,通过[HMS_ServiceCollaboration_StopCollaboration]终止跨设备互通能力。
-
用户使用远端设备拍照
- 用户使用远端设备完成拍照并确认,照片将回传到本端设备的应用,完成整个流程。
- 远端设备将自动退出相机界面,回到初始状态。
跨设备互通提供跨设备的相机、扫描、图库访问能力,平板或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 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿