更新记录

1.0.0(2025-07-08) 下载此版本

H5 陀螺仪插件 - 为 uni-app 提供 H5 平台的陀螺仪功能支持


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- × - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
× × × × × × - × × × ×

其他

多语言 暗黑模式 宽屏模式
× ×

jz-h5-gyroscope

H5 陀螺仪插件 - 为 uni-app 提供 H5 平台的陀螺仪功能支持

📋 插件简介

uni-app 官方的陀螺仪 API 在 H5 平台不支持,本插件通过浏览器的 DeviceOrientationEvent API 实现了与官方 API 相同的接口,让您可以在 H5 环境中使用陀螺仪功能。

平台差异对比

平台 uni-app 官方 本插件支持
App
H5
微信小程序
支付宝小程序
百度小程序
抖音小程序
元服务

🚀 快速开始

1. 安装使用

// 导入插件
import jzH5Gyroscope from '@/uni_modules/jz-h5-gyroscope/index.js'

2. 基本使用

export default {
  data() {
    return {
      gyroscopeData: { x: 0, y: 0, z: 0 }
    }
  },

  onLoad() {
    // 监听陀螺仪数据变化
    jzH5Gyroscope.onGyroscopeChange((data) => {
      this.gyroscopeData = data;
      console.log('陀螺仪数据:', data);
    });
  },

  methods: {
    startGyroscope() {
      jzH5Gyroscope.startGyroscope({
        interval: 200,
        success: (res) => {
          console.log('开始监听成功', res);
        },
        fail: (error) => {
          console.error('开始监听失败', error);
        }
      });
    },

    stopGyroscope() {
      jzH5Gyroscope.stopGyroscope({
        success: (res) => {
          console.log('停止监听成功', res);
        }
      });
    }
  },

  onUnload() {
    // 清理资源
    jzH5Gyroscope.stopGyroscope();
    jzH5Gyroscope.offGyroscopeChange();
  }
}

📖 API 文档

jzH5Gyroscope.startGyroscope(options)

开始监听陀螺仪数据。

参数说明

参数 类型 默认值 必填 说明
interval Number 200 监听频率,单位毫秒
success Function - 接口调用成功的回调函数
fail Function - 接口调用失败的回调函数
complete Function - 接口调用结束的回调函数

interval 参数对应关系

根据 uni-app 官方文档,微信小程序支持的 interval 参数:

  • "game":20ms/次(对应本插件:20)
  • "ui":60ms/次(对应本插件:60)
  • "normal":200ms/次(对应本插件:200)

示例

jzH5Gyroscope.startGyroscope({
  interval: 200,
  success(res) {
    console.log('开始监听陀螺仪成功', res);
  },
  fail(error) {
    console.log('开始监听陀螺仪失败', error);
  }
});

jzH5Gyroscope.stopGyroscope(options)

停止监听陀螺仪数据。

参数说明

参数 类型 必填 说明
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数

示例

jzH5Gyroscope.stopGyroscope({
  success(res) {
    console.log('停止监听陀螺仪成功', res);
  }
});

jzH5Gyroscope.onGyroscopeChange(callback)

监听陀螺仪数据变化事件。

callback 参数说明

属性 类型 说明
res Object 陀螺仪数据对象

res 的结构

名称 类型 描述
x Number X轴方向角度(俯仰角),范围 [-180, 180]
y Number Y轴方向角度(横滚角),范围 [-90, 90]
z Number Z轴方向角度(偏航角),范围 [0, 360)

示例

jzH5Gyroscope.onGyroscopeChange((data) => {
  console.log('X轴(俯仰):', data.x);
  console.log('Y轴(横滚):', data.y);
  console.log('Z轴(偏航):', data.z);
});

jzH5Gyroscope.offGyroscopeChange(callback)

取消监听陀螺仪数据变化事件。

参数说明

参数 类型 必填 说明
callback Function 要取消的回调函数,不传则取消所有回调

示例

// 取消指定回调
jzH5Gyroscope.offGyroscopeChange(myCallback);

// 取消所有回调
jzH5Gyroscope.offGyroscopeChange();

jzH5Gyroscope.getGyroscopeStatus()

获取当前陀螺仪状态(扩展方法)。

返回值

属性 类型 说明
isListening Boolean 是否正在监听
interval Number 当前监听间隔
lastData Object 最后一次数据
callbackCount Number 回调函数数量

示例

const status = jzH5Gyroscope.getGyroscopeStatus();
console.log('监听状态:', status.isListening);
console.log('监听间隔:', status.interval);
console.log('最后数据:', status.lastData);

🎯 数据说明

坐标系说明

  • X轴(俯仰角 Beta): 设备绕 X 轴旋转的角度,当设备向前倾斜时为正值
  • Y轴(横滚角 Gamma): 设备绕 Y 轴旋转的角度,当设备向左倾斜时为正值
  • Z轴(偏航角 Alpha): 设备绕 Z 轴旋转的角度,表示设备水平面的方向

数据范围

  • X轴: -180° ~ 180°
  • Y轴: -90° ~ 90°
  • Z轴: 0° ~ 360°

⚠️ 注意事项

1. 环境要求

  • HTTPS: 现代浏览器要求在 HTTPS 环境下才能访问设备传感器
  • 设备支持: 设备必须具有陀螺仪传感器
  • 浏览器支持: 支持 DeviceOrientationEvent 的现代浏览器

2. 权限处理

  • iOS 13+: 需要用户主动授权访问陀螺仪
  • Android: 通常无需额外权限
  • 桌面浏览器: 部分浏览器可能不支持

3. 最佳实践

// 1. 在页面 onLoad 中设置监听
onLoad() {
  this.setupGyroscopeListener();
},

// 2. 在页面 onUnload 中清理资源
onUnload() {
  jzH5Gyroscope.stopGyroscope();
  jzH5Gyroscope.offGyroscopeChange();
},

// 3. 错误处理
startGyroscope() {
  jzH5Gyroscope.startGyroscope({
    interval: 200,
    success: (res) => {
      console.log('成功启动陀螺仪');
    },
    fail: (error) => {
      if (error.errMsg.includes('权限')) {
        uni.showModal({
          title: '权限提示',
          content: '请在设置中允许访问陀螺仪',
          showCancel: false
        });
      } else {
        uni.showToast({
          title: '陀螺仪不可用',
          icon: 'none'
        });
      }
    }
  });
}

🔧 兼容性测试

推荐测试设备

  • iOS: iPhone 6s+ / iPad Pro+
  • Android: 支持陀螺仪的 Android 5.0+ 设备
  • 浏览器: Chrome 50+、Safari 10+、Firefox 40+

测试方法

  1. 在 HTTPS 环境下访问页面
  2. 点击开始监听按钮
  3. 旋转设备观察数据变化
  4. 验证数据范围和精度

🆚 与官方 API 的差异

特性 官方 API 本插件
H5 支持
权限处理 自动 手动请求
数据格式 {x,y,z} {x,y,z}
回调方式 相同 相同
错误处理 相同 相同

📝 更新日志

v1.0.0

  • 初始版本发布
  • 实现基本的陀螺仪监听功能
  • 支持 iOS 权限请求
  • 完整的错误处理机制

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License


注意: 本插件仅在 H5 平台有效,其他平台请使用 uni-app 官方 API。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

陀螺仪权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问