更新记录

1.0.6(2022-02-23)

  1. 新增返回原始陀螺仪数据(角速度),方便自由处理。
  2. Android 新增自定义传感器数据获取方法,方便自由处理数据。
  3. 其他问题修复。

1.0.5(2022-01-28)

  1. 修复了部分设备无法获取陀螺仪数据的问题
  2. 修复IOS返回值不正确问题

1.0.3(2021-12-31)

  1. 优化回调返回结构,现支持在同一个回调中连续获取数据。
  2. 修复 interval 设置不生效问题。
  3. 新增函数获取当前设备是否支持陀螺仪。
  4. 新增IOS端插件支持。
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


简介

该插件为安卓端/IOS APP提供了获取陀螺仪数据的能力,功能大致与官方API相同(截至本插件开发时,官方API依然不支持APP端,未来可能会支持?)。

使用方法

export default {
  data() {
    return {
      gyroUpdateTimer: 0,
      gyroModule: null,
    }
  },
  beforeDestroy() {
    clearInterval(this.gyroUpdateTimer);
    //停止监听陀螺仪数据
    this.gyroModule.stopGyro();
  },
  onLoad(options) {
    this.gyroModule = uni.requireNativePlugin('imengyu-UniAndroidGyro-GyroModule');
    //因为uniapp的原因,如果要在页面一进入就监听,需要加一个延时
    setTimeout(() => {
      this.gyroModule.startGyro({
        interval: "normal", //监听速度,可选:normal正常(5次秒),ui较缓慢(约16次秒),game最快(50次秒)。此数据对应于安卓的SensorManager.SENSOR_DELAY_*
      }, (res) => {
        console.log(res);
        if(res.success) {
          //定时器获取陀螺仪数据
          this.gyroUpdateTimer = setInterval(() => {
            //获取陀螺仪数据
            this.gyroModule.getGyroValue((res) => {
              console.log(res);
              this.gyroValueX = res.x;
              this.gyroValueY = res.y;
              this.gyroValueZ = res.z;
              this.gyroValueRawX = res.rawGyroscopeValue.x;
              this.gyroValueRawY = res.rawGyroscopeValue.y;
              this.gyroValueRawZ = res.rawGyroscopeValue.z;
            });
          }, 1000);
        } else {
          //失败
          if(res.notSupport) {
            //如果notSupport为true表示当前设备不支持陀螺仪
            uni.showModal({
              title: '提示',
              content: '当前设备不支持陀螺仪!',
              showCancel: false
            });
          }
        }
      });
    }, 100)
  },
}

API 说明文档

  • startGyro(options, callback)

    开始监听陀螺仪数据变化事件,需要手动调用获取当前数据。

    • 此函数回调仅为返回执行是否成功以及错误信息,不会返回陀螺仪数据,要使用回调模式获取陀螺仪数据,请使用 startGyroWithCallback 方法

    • 此函数不能重复调用开启。开启之前须使用 getGyroStarted 检查当前状态。

    • 如果设备不支持陀螺仪,则会自动停止。

    • 参数

    属性 类型 说明
    interval string 监听速度,可选 normal、ui、game、fastest,默认为normal。此数据对应于安卓的SensorManager.SENSORDELAY*。在IOS上可以设置浮点数字符串,将会直接传递到CMMotionManager.gyroUpdateInterval 上,单位是秒。
    • 回调返回数据
    属性 类型 说明
    success boolean 返回是否成功
    errMsg string 返回错误信息
    notSupport boolean 如果当前设备不支持陀螺仪,则为true
  • startGyroWithCallback(options, callback)

    使用自动回调模式, 开始监听陀螺仪数据变化事件。

    • 此函数不能重复调用开启。开启之前须使用 isGyroStarted 检查当前状态,如果要更改回调,必须先停止再重新开启。

    • 如果设备不支持陀螺仪,则会自动停止。

    • 第一次回调没有数据,只表示启动是否成功。

    • 参数

    startGyro 函数的参数相同。

    • 回调返回数据

    第一次回调返回的数据与 startGyro 函数的返回数据相同。

    第二次回调返回数据:

    属性 类型 说明
    success boolean 返回是否成功
    errMsg string 返回错误信息
    x number 当前手机x轴方向角度(手机正面向上旋转轴)(这三个xyz数据经过处理,单位是角度,带偏移修正)
    y number 当前手机y轴方向角度(手机垂直旋转轴),手机平放时为0
    z number 当前手机z轴方向角度(手机水平旋转轴),手机平放时为0
    rawGyroscopeValue object 陀螺仪原始数据 (见下方),未经处理,您可以自己进行相关计算 (同 uni.startGyroscope 的数据)
    rotationVector object 【仅Android】 旋转向量原始数据 (见下方),未经处理,您可以自己进行相关计算
    • rawGyroscopeValue 格式
    属性 类型 说明
    x number 手机绕x轴旋转的速率。(rad/s 弧度/秒)
    y number 手机绕y轴旋转的速率。(rad/s 弧度/秒)
    z number 手机绕z轴旋转的速率。(rad/s 弧度/秒)
    • rotationVector 格式

    旋转向量,方便您自由计算,更多信息可以参考 android 官方文档

    属性 类型 说明
    x number 沿x轴的旋转矢量分量 (x*sin(θ/2))。
    y number 沿y轴的旋转矢量分量 (y*sin(θ/2))。
    z number 沿z轴的旋转矢量分量 (z*sin(θ/2))。
    w number 旋转向量的标量分量 (cos(θ/2))。
  • stopGyro(callback)

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

    • 回调返回数据
    属性 类型 说明
    success boolean 返回是否成功
    errMsg string 返回错误信息
  • getGyroValue(callback)

    手动异步获取当前陀螺仪数据。该回调不会一直调用,如果需要连续数据,请加一个定时器重复获取。或者使用 startGyroWithCallback 获取连续数据。

    • 回调返回数据

    回调返回的数据与 startGyroWithCallback 第二次回调返回数据相同

  • getGyroValueSync()

    手动同步模式获取当前陀螺仪数据。

    • 函数返回数据

    返回的数据与 startGyroWithCallback 第二次回调返回数据相同

  • getGyroStarted(callback)

    获取当前是否开启了监听。

    • 回调返回数据
    属性 类型 说明
    started boolean 当前是否开启了监听
  • isGyroAvailable() (已弃用)

    获取当前设备是否支持陀螺仪。 (已弃用, 这个函数有问题,一般用不到,调用 startGyro 如果设备不支持也可以返回错误信息。 )。

  • isGyroStarted() (已弃用)

    获取当前是否开启了监听 (已弃用, 请使用 getGyroStarted )。

附加 API 说明文档

  • startCustomSensor(options, callback)

    开始自定义传感器监测 【仅Android】。 返回原始数据,方便您自由处理。

    • 请参考 Android 官方文档

    • 开启后不会自动停止,切记在页面返回之前调用 stopCustomSensor 停止监听, 否则会一直占用内存。

    • 参数

    属性 类型 说明
    interval string 监听速度,可选 normal、ui、game、fastest,默认为normal。
    type string 表示要监听的数据类型,此数据对应于Android的 Sensor.TYPE_*,关于数据的说明,请参考 Android 官方文档 。一共支持以下几个类型:
    'TYPE_ACCELEROMETER'
    'TYPE_ACCELEROMETER_UNCALIBRATED' (需要 API Level 26+)
    'TYPE_GRAVITY'
    'TYPE_GYROSCOPE'
    'TYPE_GYROSCOPE_UNCALIBRATED' (需要 API Level 26+)
    'TYPE_LINEAR_ACCELERATION'
    'TYPE_ROTATION_VECTOR'
    'TYPE_STEP_COUNTER'
    • 回调返回数据
    属性 类型 说明
    success boolean 返回是否成功
    errMsg string 返回错误信息
    values number[] 系统返回的原始数据
    customSensorId number 当前监听器的ID,可以调用 stopCustomSensor 停止当前监听器
  • stopCustomSensor(options, callback)

    停止自定义传感器监测 【仅Android】

    • 参数
    属性 类型 说明
    customSensorId number 要停止的监听器的ID
    • 回调返回数据
    属性 类型 说明
    success boolean 返回是否成功
    errMsg string 返回错误信息

兼容性特殊说明

  • 页面切换并不会停止监听。您需要在页面的 OnUnload 函数中手动停止监听。
  • 应用切换至后台之后会自动停止获取陀螺仪数据,重新换回前台后会自动重新开始。
  • IOS 无法返回BOOL, 使用字符串代替,返回 'true' 表示true,返回 '' 表示false (可使用if判断)。

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

请参考开源项目地址的开源协议

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