乐于分享
好东西不私藏

鸿蒙Flutter插件精选:sensors_plus_ohos

鸿蒙Flutter插件精选:sensors_plus_ohos

本期推荐的是 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