'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import {
  DEVICE_FREQUENCY
} from '../constants'
 
import {
  invoke
} from '../../bridge'
 
let listener
 
const callbackIds = []
 
export function startAccelerometer (options, callbackId) {
  listener = listener || plus.accelerometer.watchAcceleration((res) => {
    callbackIds.forEach(callbackId => {
      invoke(callbackId, {
        x: res.xAxis,
        y: res.yAxis,
        z: res.zAxis
      })
    })
  }, err => {
    listener = null
    invoke(callbackId, {
      errMsg: `startAccelerometer:fail ${err.message}`
    })
  }, {
    frequency: DEVICE_FREQUENCY
  })
  setTimeout(() => {
    invoke(callbackId, {
      errMsg: 'startAccelerometer:ok'
    })
  }, DEVICE_FREQUENCY)
}
 
export function stopAccelerometer () {
  if (listener) {
    plus.accelerometer.clearWatch(listener)
    listener = null
  }
  return {}
}
 
export function onAccelerometerChange (callbackId) {
  if (!callbackIds.length) {
    startAccelerometer()
  }
  callbackIds.push(callbackId)
}
 
export function offAccelerometerChange (callbackId) {
  // 暂不支持移除所有监听
  if (callbackId) {
    const index = callbackIds.indexOf(callbackId)
    if (index >= 0) {
      callbackIds.splice(index, 1)
    }
  }
  if (!callbackIds.length) {
    stopAccelerometer()
  }
}