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() } }