本期推荐的是 sensors_plus_ohos,一个为 OpenHarmony 平台提供传感器访问能力的 Flutter 插件。它是 sensors_plus[1] 在 OpenHarmony 平台的实现,支持加速度计、陀螺仪、磁力计和气压计等传感器。
安装
在 pubspec.yaml 中添加依赖:
dependencies:
sensors_plus: 6.1.1
sensors_plus_ohos: 0.1.2
权限配置
在项目的 module.json5 中增加传感器权限:
requestPermissions: [
{"name": "ohos.permission.ACCELEROMETER"},
{"name": "ohos.permission.GYROSCOPE"},
],
核心 API
导入包:
import 'package:sensors_plus/sensors_plus.dart';
加速度计(含重力影响):
accelerometerEvents.listen(
(AccelerometerEvent event) {
print('加速: x=${event.x}, y=${event.y}, z=${event.z}');
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
用户加速度计(已过滤重力):
userAccelerometerEvents.listen(
(UserAccelerometerEvent event) {
print('用户加速: x=${event.x}, y=${event.y}, z=${event.z}');
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
陀螺仪:
gyroscopeEvents.listen(
(GyroscopeEvent event) {
print('旋转: x=${event.x}, y=${event.y}, z=${event.z}');
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
磁力计:
magnetometerEvents.listen(
(MagnetometerEvent event) {
print('磁场: x=${event.x}, y=${event.y}, z=${event.z}');
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
气压计:
barometerEvents.listen(
(BarometerEvent event) {
print('气压: ${event.pressure} hPa');
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
设置采样频率:
magnetometerEvents(samplingPeriod: SensorInterval.normalInterval).listen(
(MagnetometerEvent event) {
print(event);
},
onError: (error) => print('传感器不可用: $error'),
cancelOnError: true,
);
支持的事件类型
| 事件类型 | 说明 | 单位 |
|---|---|---|
AccelerometerEvent |
加速度计数据(含重力) | m/s² |
UserAccelerometerEvent |
用户加速度(去重力) | m/s² |
GyroscopeEvent |
陀螺仪数据 | rad/s |
MagnetometerEvent |
磁力计数据 | µT |
BarometerEvent |
气压计数据 | hPa |
所有传感器事件均以 BroadcastStream 形式提供,方便多个监听器同时订阅。记得添加 onError 处理低端设备传感器不可用的情况。
引用链接
[1]sensors_plus: https://pub.dev/packages/sensors_plus
夜雨聆风