uni-app怎么获取手机陀螺仪数据 uni-app实现摇一摇交互功能【技巧】
uni.getAccelerometerFrequency无反应是因为它仅设置频率需配合uni.startAccelerometer()启动并用uni.onAccelerometerChange监听H5不支持真机调试须用iOS/Android设备。uni.getAccelerometerFrequency 为什么调用没反应因为这个 API 不是直接返回数据它只负责设置采集频率真正读取要靠 uni.onAccelerometerChange 监听。很多人写了 uni.getAccelerometerFrequency 就以为“启动了”结果监听函数压根没触发——根本没开监听。必须先调用 uni.startAccelerometer()否则 uni.onAccelerometerChange 不会收到任何数据uni.getAccelerometerFrequency 是异步接口需用 success 回调确认是否设置成功iOS 最高支持 100HzAndroid 通常 50Hz设太高会静默降级H5 端不支持该系列 API真机调试务必用 iOS 或 Android 设备模拟器无效摇一摇逻辑怎么写才不容易误触发直接比对加速度绝对值很容易被走路、放手机、按屏幕等动作干扰。关键不是“动得大”而是“动得快且方向突变”——也就是加速度变化率jerk。缓存最近 3–5 帧的 x/y/z 值算每帧与前一帧的差值平方和(dx2 dy2 dz2)只在差值平方和连续 2–3 帧超过阈值比如 15–25时才记为一次“抖动”再累计抖动次数加防抖一次摇一摇判定后清空缓存并停用监听 800ms避免连续触发别用 Math.abs(x) 1.5 这种单轴判断躺着摇、侧着摇、边走边摇都会漏判或误判uni.onAccelerometerChange 在页面卸载后还在执行这是典型内存泄漏监听没关页面跳走了回调却还挂着不仅耗电还可能报错 Cannot read property xxx of null。 腾讯小微 基于微信AI智能对话系统打造的智能语音助手解决方案