更新时间:2023-04-28 GMT+08:00
开发指导
开发流程
图1 开启AR会话开发流程
开发过程
- 获取Token。
成功获取Token后才能进行定位请求。
// 向服务器请求签名 hwar.getToken().then((res) => { // 获取成功 }).catch((err) => { // 获取失败 });
- 设置并检查AR会话开启前的相关配置。
配置操作包括创建会话、设置位置、检测陀螺仪。
- 创建会话:用于启动相机及SLAM。
- 设置位置:用于设置已知地图服务区域的GPS坐标,提高后续视觉定位的精度。
- 检测陀螺仪:用于判断设备陀螺仪的有效性。
// 并发异步请求 Promise.all([hwar.createARSession(), setAreaGPSFun({ latitude: xxx, longitude: xxx, altitude: xxx }), checkGyro() ]).then(([res1, res2, isCheckGyro]) => { if (isCheckGyro) { // 会话建立成功 } else { // 该机型暂不支持 } }).catch((err) => { // 根据错误信息err.message的不同取值,处理不同事件。 }); // 设置已知地图服务区域的GPS坐标 function setAreaGPSFun(gps) { return new Promise((resolve, reject) => { hwar.setAreaGPS(gps); resolve(true); }) } // 检测陀螺仪有效性,evt.data.gyro值为true/false function checkGyro() { return new Promise((resolve, reject) => { hwar.addEventListener("GYRO_STATUS", (evt) => { resolve(evt.data.gyro); }); }) }
对于并发异步请求捕获的错误信息(err.message),这里仅提供创建会话(hwar.createARSession)的错误信息,如表1所示。您可以对并发请求中的其他Promise对象抛出自定义错误信息,用于处理不同情况下的异常事件。
- 开启AR会话状态,发送VPS请求获取定位数据。
通过回调函数(hwar.registerGetNewVpsPose)获取定位数据,如果获取失败,可通过侦听事件“VPS_FAIL”处理。
// 设置AR状态,第一个参数设为true表示开始发送VPS请求 hwar.setARStatus(true, true, true); // 定位成功回调函数 hwar.registerGetNewVpsPose((dictPoseData, vpsOffset) => { // 获取定位成功数据 }); // 定位失败事件侦听 hwar.addEventListener("VPS_FAIL", () => { // 处理失败逻辑 });
父主题: 开启AR会话