Skip to content
简体中文
Tuya MiniApp
开发
Ray 开发
API
设备
设备方向
startDeviceMotionListening

startDeviceMotionListening

功能描述

开始监听设备方向的变化。

需引入BaseKit,且在>=2.3.2版本才可使用

使用

Ray 中使用

import { startDeviceMotionListening } from '@ray-js/ray'
startDeviceMotionListening({ ... })

原生小程序中使用

ty.startDeviceMotionListening({ ... })

请求参数

Object object

属性类型默认值必填说明
intervalenum DeviceMotionIntervalDeviceMotionInterval.normal监听加速度数据回调函数的执行频率
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

返回结果

success

void

fail

属性类型说明
errorMsgstring插件错误信息
errorCodestring错误码

引用对象

enum DeviceMotionInterval

枚举值描述
game适用于更新游戏的回调频率,在 20ms/次 左右
ui适用于更新 UI 的回调频率,在 60ms/次 左右
normal普通的回调频率,在 200ms/次 左右

代码示例

请求示例

// Ray调用方式
import React, { useEffect, useState } from 'react'
 
import {
  Button,
  Text,
  View,
  offDeviceMotionChange,
  onDeviceMotionChange,
  startDeviceMotionListening,
  stopDeviceMotionListening,
} from '@ray-js/ray'
 
import { useThrottleFn } from 'ahooks'
 
export default function Demo() {
  const [data, setData] = useState<any>()
 
  const listener = (data: any) => {
    console.log('onDeviceMotionChange', data)
    setData(data)
  }
 
  const [isListening, setIsListening] = useState(false)
 
  const { run } = useThrottleFn(listener, { wait: 1000 })
 
  useEffect(() => {
    if (isListening) {
      onDeviceMotionChange(run)
    } else {
      offDeviceMotionChange(run)
    }
  }, [isListening])
 
  return (
    <View style={{ width: '100%', height: '100%', padding: '20rpx' }}>
      <Button
        onClick={() => {
          startDeviceMotionListening({
            success: (res) => {
              console.log('startDeviceMotionListening success', res)
              setIsListening(true)
            },
          })
        }}
      >
        startDeviceMotionListening
      </Button>
 
      <Button
        onClick={() => {
          stopDeviceMotionListening({
            success: () => {
              console.log('stopDeviceMotionListening success')
              setIsListening(false)
            },
          })
        }}
      >
        stopDeviceMotionListening
      </Button>
      <Text
        style={{
          color: '#333',
          wordBreak: 'break-all',
          whiteSpace: 'pre-wrap',
        }}
      >
        {JSON.stringify(data)}
      </Text>
    </View>
  )
}
// 原生调用方式
ty.startDeviceMotionListening({
  success: console.log,
  fail: console.error
});
ty.stopDeviceMotionListening({
  success: console.log,
  fail: console.error
});
ty.onDeviceMotionChange(console.log);

错误码

错误码错误描述
10001Sensor initialization fail
此页内容是否对您有帮助?
意见反馈
小程序机器人助手
需求提交
|
论坛反馈
|
问卷调查
|
官方群聊