HarmonyOS 5.0.0 或以上:获取设备加速度传感器数据(支持实时监听)
·
📌 场景介绍
加速度传感器可用于实现:
-
摇一摇 功能
-
计步器、运动识别
-
小车/滑块控制、陀螺仪视角等
本篇将实现:
-
启动加速度传感器监听
-
实时获取 X/Y/Z 方向的加速度值
-
展示在页面上动态刷新
🧱 页面结构
/entry/src/main/ets
└── pages/
└── AccelerometerDemo.ets // 传感器实时监听页
🧱 权限配置(config.json)
"reqPermissions": [
{ "name": "ohos.permission.ACCELEROMETER" }
]
🧩 AccelerometerDemo.ets 示例页面
import sensor from '@ohos.sensor'
@Entry
@Component
struct AccelerometerDemo {
@State accelX: string = '0.0'
@State accelY: string = '0.0'
@State accelZ: string = '0.0'
@State isListening: boolean = false
private startSensor() {
if (this.isListening) return
this.isListening = true
sensor.on(sensor.SensorId.SENSOR_ID_ACCELEROMETER, (data) => {
this.accelX = data.x.toFixed(2)
this.accelY = data.y.toFixed(2)
this.accelZ = data.z.toFixed(2)
})
}
private stopSensor() {
if (!this.isListening) return
sensor.off(sensor.SensorId.SENSOR_ID_ACCELEROMETER)
this.isListening = false
}
build() {
Column() {
Text("📡 加速度传感器演示").fontSize(22).margin(20)
Row() {
Button(this.isListening ? "停止监听" : "开始监听")
.onClick(() => this.isListening ? this.stopSensor() : this.startSensor())
.margin(10)
}
Text(`X 轴:${this.accelX}`).fontSize(16).margin(5)
Text(`Y 轴:${this.accelY}`).fontSize(16).margin(5)
Text(`Z 轴:${this.accelZ}`).fontSize(16).margin(5)
}
.padding(30)
.height('100%')
.alignItems(HorizontalAlign.Start)
}
}
✅ 效果说明
-
点击“开始监听”后开始监听传感器数据
-
页面每隔几十毫秒实时更新 XYZ 加速度值
-
设备晃动时数值剧烈变化
🔧 拓展建议
-
判断三轴数据变化实现“摇一摇”事件
-
结合时间轴绘制运动趋势图(折线图)
-
支持陀螺仪(GYROSCOPE)或重力(GRAVITY)等其他传感器监听
更多推荐


所有评论(0)