鸿蒙next实现摇一摇功能
·
鸿蒙 next 实现摇一摇功能
获取加速度权限
// entry\src\main\module.json5
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
},
{
"name": "ohos.permission.ACCELEROMETER"
}
]
实现逻辑代码
import sensor from "@ohos.sensor";
class ShakeSensor {
private x1: number = 0;
private y1: number = 0;
private z1: number = 0;
// 摇动次数
private count: number = 0;
private fn: Function | undefined;
public sensorOn(fn: Function) {
this.fn = fn;
this.count = 0;
// 加速度传感器
sensor.on(
sensor.SensorId.ACCELEROMETER,
(data) => {
if (this.x1 === data.x && this.y1 === data.y && this.z1 === data.z) {
return;
}
this.x1 = data.x;
this.y1 = data.y;
this.z1 = data.z;
this.count++;
if (this.count > 5) {
this.fn?.();
this.count = 0;
}
},
{ interval: 100000000 }
);
}
// 关闭传感器
public sensorOff() {
console.log("关闭传感器");
this.count = 0;
sensor.off(sensor.SensorId.ACCELEROMETER);
}
}
export default ShakeSensor;
引入到业务场景
struct ShakePage {
onPageShow(): void {
this.shake.sensorOn(() => {
console.log("摇一摇");
})
}
onPageHide(): void {
this.shake.sensorOff();
}
build() {
Collumn()
}
}
关注飞龙,领取更多干货
更多推荐



所有评论(0)