加速度传感器:
//加速度传感器授权
{
"name": "ohos.permission.ACCELEROMETER"
},
//开启
sensor.on(sensor.SensorId.ACCELEROMETER,...)
// 注销监听
sensor.off(sensor.SensorId.ACCELEROMETER)
磁场传感器:
// 开启 磁场传感器
sensor.on(sensor.SensorId.MAGNETIC_FIELD,
//关闭
sensor.off(sensor.SensorId.MAGNETIC_FIELD)
马达振动:
// 马达振动权限
{
"name": "ohos.permission.VIBRATE"
},
//开启马达振动
vibrator.startVibration({ type: "time", duration: 500 }, { id: 1, usage: 'alarm' })
// 关闭马达振动
vibator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_TIME)
闪光灯(手电筒模式)
// 开启闪光灯(手电筒模式)
async openTorch() {
const cameraManager = await this.getCameraManagerInstance()
cameraManager.setTorchMode(camera.TorchMode.ON)
}
// 关闭闪光灯(手电筒模式)
async closeTorch() {
const cameraManager = await this.getCameraManagerInstance()
cameraManager.setTorchMode(camera.TorchMode.OFF)
}
// 切换闪光灯(手电筒模式)
async toggleTorch() {
const cameraManager = await this.getCameraManagerInstance()
if (cameraManager.getTorchMode() === camera.TorchMode.OFF) {
this.openTorch()
} else {
this.closeTorch()
}
}
音频播放:
AVPlayer管理器封装
//添加AVPlayer管理器
import { media } from '@kit.MediaKit';
class AVPlayerManager {
private avPlayer: media.AVPlayer | null = null
private loop: boolean = false
private rawFdPath: string = ''
async getAVPlayerInstance() {
// 如果已存在,直接返回
if (this.avPlayer !== null) {
return this.avPlayer
}
// 初始化播放器
const player = await media.createAVPlayer()
player.on('stateChange', (state) => {
switch (state) {
case 'initialized':
player.prepare()
break;
case 'prepared':
player.play()
break;
case 'playing':
player.play()
break;
case 'paused':
player.pause()
break;
case 'completed':
if (this.loop === true) {
player.play() // 播放结束继续播放:循环播放
} else {
player.stop() // 播放结束
}
break;
case 'stopped':
player.reset() // stop 时 reset -> 释放音频资源
break;
default:
break;
}
})
this.avPlayer = player
return this.avPlayer
}
// 加载 src/main/resources/rawfile 的文件
async playByRawSrc(rawFile: string) {
const player = await this.getAVPlayerInstance()
// 先释放原来的资源
await player.reset()
// 获取文件信息
const context = getContext()
// 加载 src/main/resources/rawfile 文件夹中的文件
const fileDescriptor = await context.resourceManager.getRawFd(rawFile)
// 设置播放路径
player.fdSrc = fileDescriptor
// 播放
player.play()
}
// 停止播放
async stop() {
const player = await this.getAVPlayerInstance()
this.loop = false
player.stop()
}
async setLoop(isLoop: boolean) {
this.loop = isLoop
}
}
export const avPlayerManager = new AVPlayerManager()