3.2 运行前验证
检查当前设备是否安装了XRKit,若已经安装则正常运行 。具体实现代码如下:
if (!XrKitFeatureFactory.isXrKitExist(getApplicationContext())) {Toast.makeText(this, "XRKit is not available ", Toast.LENGTH_SHORT).show();return false;}
3.3 创建AR场景
使用XRKit特性组件工厂类XrKitFeatureFactory , 实例化特性组件管理对象xrKitFeature并设置特性事件监听,特性事件监听用来获取XRKit服务端上报的必要特性事件 。xrKitFeature可根据需求创建不同AR场景,本例创建的是AR展示场景(ArSceneView) 。
try {if (xrKitFeature == null) {xrKitFeature = XrKitFeatureFactory.createXrKitFeature(getApplicationContext());}// Register a feature listener.xrKitFeature.setFeatureEventListener(this);// Create arSceneView.sceneView = xrKitFeature.createArSceneView(getApplicationContext());} catch (XrKitUnavailableServiceApkTooOldException e) {Toast.makeText(this, "XRKit Service is Too Old, Please upgrade!",Toast.LENGTH_SHORT).show();return false;}
3.4 绑定视图到应用布局
获取当前场景的视图,绑定视图到应用的UI布局当中 。
layout.addView(sceneView.getView(), 0, new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));
3.5选择模式
【AR空间音频能力,打造沉浸式声音体验】Ar展示场景(ArSceneView)有AR模式和3D模式两种模式,可根据需求选择AR模式或3D模式 。
AR模式:即虚实结合,您可以构建能在用户环境中响应的图像(如家具或产品包装)的AR应用 。
3D模式:虚拟动画,您可以利用此功能构建展示动画的AR应用 。
// AR模式sceneView.setArMode(true);// 3D模式sceneView.setArMode(false);
3.6 设置场景
加载虚拟模型、设置3D场景的背景、设置AR场景下平面的可见性 。
sceneView.loadModel(GONGCHENGSHI, "gongchengshi");sceneView.setBackground(IMG_BLACK);sceneView.setPlaneVisible(true);
在activity的onResume方法中调用sceneView的resume方法 , 启动sceneView场景 。
protected void onResume() {Log.d(TAG, "activity resume.");super.onResume();if (sceneView != null) {sceneView.resume();}}
3.7 添加空间音频
在模型处添加音频,若此时空间音效引擎未做初始化 , 会实施初始化的动作 。目前只支持MP3和WAV(PCM)格式音频 。标识音频的全局唯一ID需要您根据业务需求指定,传入重复的ID , 不会覆盖已经添加的音频 。添加的音频在设备与模型的距离小于等于5米时生效 。
model.attachSoundToModel(String soundId, String soundUrl)// 在模型处添加音频String soundId,例如:“Sound_Chariots_Repeat”String soundUrl,例如: “assets://sounds/chariots.mp3”model.detachSoundFromModel(String soundId)// 从模型中删除音频 。model.playSound(String soundId, int playMode)// 开始播放音频 。playMode有两种模式(参考IModel):int PLAY_MODE_ONCE// 播放一次音频 。int PLAY_MODE_REPEAT// 循环播放音频 。model.pauseSound(String soundId)// 暂停播放音频 。
了解更多详情>>
访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee
关注我们 , 第一时间了解 HMS Core 最新技术资讯~
推荐阅读
- 显示内存不足怎么处理(明明有内存却显示磁盘空间不足)
- 荣耀x30i续航能力_荣耀x30i续航怎么样
- 真正“搞”懂HTTP协议02之空间穿梭
- iQOO8Pro续航能力怎么样_iQOO8Pro续航实测
- python3使用mutagen进行音频元数据处理
- iphone13续航能力_iphone13续航时间多久
- 猫之城侵蚀空间道具怎么选择
- 华为P50Pro和iPhone12Promax拍照测试_拍照能力对比
- <一>关于进程虚拟地址空间区域内存划分和布局
- 如何用AR Engine环境Mesh能力实现虚实遮挡