gyroscope.md 3.2 KB
Newer Older
Q
qiang 已提交
1 2 3 4 5 6 7 8
### uni.onGyroscopeChange(CALLBACK)

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

支付宝小程序频率为 500ms/次,微信小程序频率根据 [uni.startGyroscope](/api/system/gyroscope?id=startgyroscope) 的 interval 参数设置。事件只有在调用 [uni.startGyroscope](/api/system/gyroscope?id=startgyroscope) 后才会开始监听,使用 [uni.stopGyroscope](/api/system/gyroscope?id=stopgyroscope) 可以停止监听。

**平台差异说明**

Q
qiang 已提交
9
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|
Q
qiang 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|x|x|

**CALLBACK 参数说明**

|属性|类型|说明
|--|--|--|
|res|Object|res = {x,y,x}|

**res 的结构**

|名称|类型|描述|
|---|---|---|
|x|number|x轴方向角速度|
|y|number|y轴方向角速度|
|z|number|z轴方向角速度|

### uni.startGyroscope(OBJECT)

开始监听陀螺仪数据。

**平台差异说明**

Q
qiang 已提交
33
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|
Q
qiang 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|x|x|

|属性|类型|默认值|必填|说明|平台说明|
|---|---|---|---|---|
|interval|string|normal|否|监听陀螺仪数据回调函数的执行频率:game(20ms/次)、ui(60ms/次)、normal(200ms/次)|微信小程序|
|success|function||否|接口调用成功的回调函数||
|fail|function||否|接口调用失败的回调函数||
|complete|function||否|接口调用结束的回调函数(调用成功、失败都会执行)| |

### uni.stopGyroscope(OBJECT)

停止监听陀螺仪数据。

**平台差异说明**

Q
qiang 已提交
50
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|
Q
qiang 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|x|x|

|属性|类型|必填|说明|
|---|---|---|---|
|success|function|否|接口调用成功的回调函数|
|fail|function|否|接口调用失败的回调函数|
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|

**代码示例**

```html
<template>
    <view>
        <button @click="start">开始监听陀螺仪变化</button>
        <button @click="stop">停止监听陀螺仪变化</button>
    </view>
</template>
```

```javascript
export default {
    methods: {
        start() {
            uni.onGyroscopeChange((res) => {
                console.log('gyroData.rotationRate.x = ' + res.x)
                console.log('gyroData.rotationRate.y = ' + res.y)
                console.log('gyroData.rotationRate.z = ' + res.z)
            });
            uni.startGyroscope({
                interval: "normal",
                success() {
                    console.log('success')
                },
                fail() {
                    console.log('fail')
                }
            })
        },
        stop(){
            uni.stopGyroscope({
                success() {
                    console.log('stop success!')
                },
                fail() {
                    console.log('stop fail!')
                }
            })
        }
    }
}
```

**Tips**

* 陀螺仪 相关 API 在小程序开发工具中调用可能报错,请在真机中测试