如今,随着AR技术的不断发展,人们已经不再满足于使用键盘、鼠标等简单的设备来实现传统的人机交互方式。随着用户接触机器的多样化,繁琐的操作不仅对部分用户有门槛,也增加了他们的学习成本;如果能采用一种自然的、日常的人机交互方式,不仅会更容易上手,还可以让开发者在app内开发出更多的玩法。例如,在视频直播或拍照过程中,一个手势可以添加相应的贴纸或特效,丰富交互体验;面对智能家电等硬件设备时,不同的手势可以控制相应的功能。那么,应用如何才能实现更自然的人机交互呢?华为HMSCoreAREngine提供各种特定手势的识别,输出识别手势类别的结果并给出手掌检测框的屏幕坐标,支持左右手。当图像中出现多只手时,只反馈一只手(最清晰、置信度最高)的识别结果和坐标信息。支持前后摄像头切换。通过手势识别能力,可以将虚拟物体叠加在人手的位置上,并根据不同的手势变化启动一定的状态切换,为开发者的AR应用提供基础的交互功能。不仅如此,AREngine的手部追踪功能可以识别和追踪21个手部关节点的位置和姿势,形成手部骨骼模型,可以区分左右手,同时提供单手关节点和骨骼识别能力,以及输出手指端点、手骨和手的其他高级特征。通过手部骨骼的识别能力,开发者可以将虚拟物体叠加在更精确的手部位置,如指尖、手掌等;使用手骨,可以驱动虚拟手做出更丰富、更精细的动作,为开发者提供AR应用增强的交互功能和令人难以置信的新颖玩法。集成步骤开发环境要求:JDK1.8.211及以上版本。安装AndroidStudio3.0及以上:minSdkVersion26及以上targetSdkVersion29(推荐)compileSdkVersion29(推荐)Gradle6.1.1及以上(推荐)在华为终端设备上的应用商店下载AREngine服务器APK(需要在华为应用商店,搜索“HuaweiAREngine”),在终端设备上安装。测试应用的设备:参考AREngine特性软硬件依赖表。如果同时使用多个HMSCore服务,需要使用每个Kit对应的最大值。开发准备在开发应用之前,您需要在华为开发者联盟网站注册为开发者并完成实名认证。具体请参见账号注册与认证。华为以Maven仓库集成方式提供AREngineSDK包。在开始开发之前,您需要将AREngineSDK集成到您的开发环境中。对于7.0、7.0和7.1及以上版本的Gradle插件,AndroidStudio的代码库配置有所不同。请根据您当前的Gradle插件版本选择相应的配置流程。以7.0为例:打开AndroidStudio项目级“build.gradle”文件,添加Maven代码库。在“buildscript>repositories”配置HMSCoreSDK的Maven仓库地址。buildscript{repositories{google()jcenter()maven{url"https://developer.huawei.com/repo/"}}}打开项目级"settings.gradle"文件,配置HMS的Maven仓库地址核心开发工具包。dependencyResolutionManagement{repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories{repositories{google()jcenter()maven{url"https://developer.huawei.com/repo/"}}}}添加依赖项在“dependencies”中添加以下内容编译依赖:dependencies{implementation'com.huawei.hms:arenginesdk:{version}}应用开发1、运行前验证:检查当前设备是否安装了AREngine。如果已安装,它将正常运行。若未安装,App应以适当的方式提醒用户安装AREngine,如主动跳转到应用市场,要求安装AREngine。具体实现代码如下:booleanisInstallArEngineApk=AREngineesApk.isAREngineApkReady(this);if(!isInstallArEngineApk){//ConnectAppMarketActivity.class为跳转到应用市场的activity。startActivity(newIntent(this,com.huawei.arengine.demos.common.ConnectAppMarketActivity.class));isRemindInstall=true;}2.初始化AR场景:AREngine提供了5个场景,包括运动追踪(ARWorldTrackingConfig)、人脸追踪(ARFaceTrackingConfig)、手部识别(ARHandTrackingConfig)、身体追踪(ARBodyTrackingConfig)和图像识别(ARImageTrackingConfig)。调用ARHandTrackingConfig接口初始化手部识别。mArSession=newARSession(上下文);ARHandTrackingConfigconfig=newARHandTrackingconfig(mArSession);获取ARhandTrackingconfig后,可以设置摄像头的前置或后置以及一些可选的方法:Config.setCameraLensFacing(ARConfigBase.CameraLensFacing.FRONT);需要将手部识别得到的config配置到ArSession中,然后启动手部识别场景:mArSession.configure(config);mArSession.resume();初始化HandSkeletonLineDisplay类,该类根据手部骨架Point坐标绘制手部骨架线:ClassHandSkeletonLineDisplayimplementsHandRelatedDisplay{//该类需要几个方法//初始化methodpublicvoidinit(){}//绘制手部骨架点的方法,这里需要传入ARHand对象,使用来获取数据publicvoidonDrawFrame(Collection
