更新记录

1.0.2(2024-12-24)

  1. 修改高版本HB里Android回调问题

1.0.1(2024-12-24)

  1. 修复高版本HB支持持续回调问题

1.0.0(2024-04-09)

陀螺仪、加速度传感器、摇一摇

查看更多

平台兼容性

uni-app(3.7.1)

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

uni-app x(3.7.1)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 - -

其他

多语言 暗黑模式 宽屏模式

陀螺仪加速度传感器摇一摇

  • 陀螺仪、加速度传感器、摇一摇
  • 如需定制或咨询请点击插件标题上方的"进入交流群"私聊作者
  • 摇一摇功能实现请参考demo示例,具体灵敏度可以各自去调试

权限

  • Android权限

  "<uses-permission android:name=\"android.permission.VIBRATE\"/>"

接口


import {
    UTSShare
} from "@/uni_modules/wrs-uts-shake"
let share = new UTSShare()
  • 设置参数(仅支持iOS)

share.setParams({
    accelerometerUpdateInterval: 1
})
  • 开始监测陀螺仪

// 陀螺仪
if (this.isAndroid) {
    var params = {}
    // 4: 陀螺仪 1:加速度传感器 
    params.type = 4
    //  * 多久获取一次数据  
    // 0: SENSOR_DELAY_FASTEST 最快
    // 1: SENSOR_DELAY_GAME 适合游戏
    // 2: SENSOR_DELAY_UI 绘画UI
    // 3: SENSOR_DELAY_NORMAL 普通界面

    params.samplingPeriodUs = 2
    share.startSensor(params, (resp) => {
        // this.showMsg(JSON.stringify(resp))
        var sensorEvent = resp.sensorEvent
        if (sensorEvent) {
            if (sensorEvent.values.length >= 3) {
                var x = sensorEvent.values[0]
                var y = sensorEvent.values[1]
                var z = sensorEvent.values[2]

                var deltaX = x - this.x;
                var deltaY = y - this.y;
                var deltaZ = z - this.z;

                this.x = x
                this.y = y
                this.z = z
            }
        }
    })
} else {
    share.startGyroUpdates((resp) => {
        this.showMsg(JSON.stringify(resp))
        if (resp.data) {
            let y = resp.data.y
            let x = resp.data.x
            let z = resp.data.z
            this.x = x
            this.y = y
            this.z = z
        }

    })
}
  • 暂停监测陀螺仪

if (this.isAndroid) {
    var params = {}
    params.type = 4
    share.stopSensor(params)
} else {
    share.stopGyroUpdates()
}
  • 开始监测加速度传感器

// 加速度传感器
if (this.isAndroid) {
    var params = {}
    // 4: 陀螺仪 1:加速度传感器 
    params.type = 1
    //  * 多久获取一次数据  
    // 0: SENSOR_DELAY_FASTEST 最快
    // 1: SENSOR_DELAY_GAME 适合游戏
    // 2: SENSOR_DELAY_UI 绘画UI
    // 3: SENSOR_DELAY_NORMAL 普通界面

    params.samplingPeriodUs = 2
    share.startSensor(params, (resp) => {
        // this.showMsg(JSON.stringify(resp))
        var opt = resp.opt
        switch (opt) {
            // 值发生变化
            case "onSensorChanged":
                var sensorEvent = resp.sensorEvent
                if (sensorEvent) {
                    if (sensorEvent.values.length >= 3) {
                        var x = sensorEvent.values[0]
                        var y = sensorEvent.values[1]
                        var z = sensorEvent.values[2]

                        var deltaX = x - this.x;
                        var deltaY = y - this.y;
                        var deltaZ = z - this.z;

                        this.x = x
                        this.y = y
                        this.z = z

                        var GRAVITY_EARTH = 9.80665
                        var accelerameter = Math.sqrt(deltaX * deltaX + deltaY * deltaY +
                            deltaZ *
                            deltaZ) / GRAVITY_EARTH
                        // console.log("accelerameter:" + accelerameter)
                        if (accelerameter > 3.0) {
                            // 毫秒
                            var currentTime = Date.now()
                            if (this.lastShakeTime == 0) {
                                this.lastShakeTime = currentTime
                            } else {
                                var between = currentTime - this.lastShakeTime
                                if (between >= 1000) {
                                    console.log("accelerameter:" + accelerameter)
                                    this.shakeAction()
                                }
                                this.lastShakeTime = currentTime
                            }
                        }
                    }
                }
                break;
                // 精确度发生变化
            case "onAccuracyChanged":
                break;

            default:
                break;
        }
    })
} else {
    share.startAccelerometerUpdates((resp) => {
        this.showMsg(JSON.stringify(resp))
        if (resp.data) {
            let y = resp.data.y
            let x = resp.data.x
            let z = resp.data.z
            this.x = x
            this.y = y
            this.z = z
            let accelerameter = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))
            // 
            if (accelerameter > 0.7) {
                // 毫秒
                var currentTime = Date.now()
                if (this.lastShakeTime == 0) {
                    this.lastShakeTime = currentTime
                } else {
                    var between = currentTime - this.lastShakeTime
                    if (between > 1000) {
                        console.log("accelerameter:" + accelerameter)
                        this.shakeAction()
                    }
                    this.lastShakeTime = currentTime
                }
            }
        }
    })
}
  • 暂停监测加速度传感器

if (this.isAndroid) {
    var params = {}
    params.type = 1
    share.stopSensor(params)
} else {
    share.stopAccelerometerUpdates()
}

隐私、权限声明

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

android: android.permission.VIBRATE ios: 无

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

插件不采集任何数据

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