提交 4e06b233 编写于 作者: Q qiang

feat(App): onCompassChange, offCompassChange, startCompass, stopCompass

上级 efe4851d
......@@ -39,7 +39,7 @@
"node": ">=10.0.0"
},
"devDependencies": {
"@dcloudio/types": "^2.2.8",
"@dcloudio/types": "^2.2.9",
"@microsoft/api-extractor": "^7.13.2",
"@rollup/plugin-alias": "^3.1.1",
"@rollup/plugin-commonjs": "^17.0.0",
......
import {
defineAsyncApi,
API_ON_COMPASS,
API_TYPE_ON_COMPASS_CHANGE,
API_OFF_COMPASS,
API_TYPE_OFF_COMPASS_CHANGE,
API_START_COMPASS,
API_TYPE_START_COMPASS,
API_STOP_COMPASS,
API_TYPE_STOP_COMPASS,
defineOnApi,
} from '@dcloudio/uni-api'
import { DEVICE_FREQUENCY } from '../constants'
let listener: number | null = null
export const onCompassChange = <API_TYPE_ON_COMPASS_CHANGE>(
defineOnApi(API_ON_COMPASS, () => {
startCompass()
})
)
export const offCompassChange = <API_TYPE_OFF_COMPASS_CHANGE>(
defineOnApi(API_OFF_COMPASS, () => {
stopCompass()
})
)
export const startCompass = <API_TYPE_START_COMPASS>(
defineAsyncApi(API_START_COMPASS, (_, { resolve, reject }) => {
if (!listener) {
plus.orientation.watchOrientation(
(res) => {
UniServiceJSBridge.invokeOnCallback(API_ON_COMPASS, {
direction: res.magneticHeading,
})
},
(err) => {
reject(err.message)
listener = null
},
{
frequency: DEVICE_FREQUENCY,
}
)
}
setTimeout(resolve, DEVICE_FREQUENCY)
})
)
export const stopCompass = <API_TYPE_STOP_COMPASS>(
defineAsyncApi(API_STOP_COMPASS, (_, { resolve }) => {
if (listener) {
plus.orientation.clearWatch(listener)
listener = null
}
resolve()
})
)
export * from './file/getFileInfo'
export * from './device/compass'
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册