SDK内部派发事件
SDK内部派发事件如表1所示。
事件名称 |
描述 |
携带的数据 |
数据类型 |
事件说明 |
---|---|---|---|---|
GYRO_STATUS |
陀螺仪有效性检测。 |
gyro |
boolean |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.gyro表示设备陀螺仪是否正常。 |
WEB_INFO |
版本信息。 |
{ slam: string; phone: string; } |
Object |
侦听函数,会接收到一个参数:event: { data: Object }
|
UPDATE_CAMERA_FOV |
刷新渲染相机FOV。只需要相机内参fy值,计算透视相机的fov值。 |
fy |
number |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.fy表示设备相机内参fy值。 |
LANDSCAPE_BY_ROLL |
当前设备是否横屏。 |
isLandscapeByRoll |
boolean |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.isLandscapeByRoll表示当前设备是否横屏。 |
AUGULAR_VELOCITY_BIG |
当设备角速度过大时会接收到此通知。 |
str |
string |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.str表示提示信息的内容。 |
VPS_CHECK_INFO |
视觉定位时检测信息提示。
|
str |
string |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.str表示提示信息的内容。 |
ORIENTATION_NORMAL |
手机俯仰角是否正常。视觉定位时需要竖屏正向手持设备。 |
isNormal |
boolean |
需要侦听回调,回调函数会接收到一个参数:event: { data: Object } event.data.isNormal表示当前设备的俯仰角是否正常。 |
VIDEO_STREAM_GET_ERROR |
视频流获取失败。 可能原因是:
|
- |
- |
需要侦听回调。回调函数无event参数。 |
VIDEO_STREAM_GET_NONE_PIXEL |
视频流为空白像素。通常原因是浏览器多个标签页同时申请获取视频流。 |
- |
- |
需要侦听回调。回调函数无event参数。 |
NO_SRTEAM |
获取设备的相机时出错。一般是设备没有后置摄像头。 |
- |
- |
需要侦听回调。回调函数无event参数。 |
VPS_FAIL |
VPS定位失败。可能是定位不在地图范围、定位超时等原因。 |
- |
- |
需要侦听回调。回调函数无event参数。 |
接口调用及相机fov设置示例
// 以事件名"UPDATE_CAMERA_FOV"为例 hwar.addEventListener("UPDATE_CAMERA_FOV", (evt) => { resolve(evt.data.fy);//请根据返回的fy来设置渲染相机的fov }); // Three.js r144版本 相机fov设置代码示例(TS语言) // 获取设备标定参数后设置相机参数 public updateFov(fy): void { this.nVpsFy = fy; let nFov: number = ThreeUtils.calculateVerticalFov(RenderConfig.RenderCameraWidth, this.nVpsFy); let fov: number = ThreeUtils.radianToDegree(nFov); this.camera.fov = fov; } // ThreeUtils.ts static calculateVerticalFov(nImageHeight: number, nFocal: number) { return 2 * Math.atan(0.5 * nImageHeight / nFocal); } static radianToDegree(nRadian: number) { return nRadian / Math.PI * 180; } // LayaAir 2.12版本 相机fov设置代码示例(TS语言) // 获取设备标定参数后设置相机参数 public updateFov(fy): void { this.nVpsFy = fy; let nFov: number = LayaUtils.calculateVerticalFov(RenderConfig.RenderCameraWidth, this.nVpsFy); let fov: number = LayaUtils.radianToDegree(nFov); this.mainCamera.fieldOfView = fov; } // LayaUtils.ts static calculateVerticalFov(nImageHeight: number, nFocal: number) { return 2 * Math.atan(0.5 * nImageHeight / nFocal); } static radianToDegree(nRadian: number) { return nRadian / Math.PI * 180; }