更新时间:2023-04-28 GMT+08:00
分享

开发指导

开发流程

图1 开启AR会话开发流程

开发过程

  1. 获取Token。

    成功获取Token后才能进行定位请求。
    // 向服务器请求签名
    hwar.getToken().then((res) => { 
        // 获取成功
    }).catch((err) => {
        // 获取失败
    });

  2. 设置并检查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对象抛出自定义错误信息,用于处理不同情况下的异常事件。

    表1 hwar.createARSession中错误信息说明

    错误信息

    说明

    SLAM_INIT_FAIL

    SLAM启动失败。

    PHONE_TYPE_NOT_SURPORT

    设备机型暂不支持。

  3. 开启AR会话状态,发送VPS请求获取定位数据。

    通过回调函数(hwar.registerGetNewVpsPose)获取定位数据,如果获取失败,可通过侦听事件“VPS_FAIL”处理。

    // 设置AR状态,第一个参数设为true表示开始发送VPS请求
    hwar.setARStatus(true, true, true);
    
    // 定位成功回调函数
    hwar.registerGetNewVpsPose((dictPoseData, vpsOffset) => {
        // 获取定位成功数据
    });
    
    // 定位失败事件侦听
    hwar.addEventListener("VPS_FAIL", () => {
        // 处理失败逻辑
    });

相关文档