Flutter 获取手机传感器数据

news2025/1/14 1:15:33

前言

在Flutter中可以使用sensors_plus插件来访问加速度计、陀螺仪、磁力计以及气压传感器

sensors_plue的平台支持

平台

是否支持

Android
iOS
MacOS
Web
Linux
Windows

sensors_plue的要求

  • Flutter >=3.19.0
  • Dart >=3.3.0 <4.0.0
  • iOS >=12.0
  • MacOS >=10.14
  • Android compileSDK 34
  • Java 17
  • Android Gradle Plugin >=8.3.0
  • Gradle wrapper >=8.4

sensors_plue的常用方法

常用方法

描述

监听返回类型

accelerometerEventStream({samplingPeriod}).listen()

监听设备的加速度(包括重力影响)

AccelerometerEvent

userAccelerometerEventStream({samplingPeriod}).listen()

监听设备的加速度(不包括重力影响)

UserAccelerometerEvent

gyroscopeEventStream({samplingPeriod}).listen()

监听设备的陀螺仪数据

GyroscopeEvent

magnetometerEventStream({samplingPeriod}).listen()

监听设备的环境磁场

MagnetometerEvent

barometerEventStream({samplingPeriod}).listen()

监听设备周围的大气压力BarometerEvent
AccelerometerEvent

加速计的离散读数。加速计测量设备的速度。请注意,这些读数包括重力的影响。简单地说,您可以使用加速计读数来判断设备是否在特定方向上移动。

属性

描述

类型

timestamp

事件的时间戳,单位为微秒

DateTime

x沿x轴的加速力(包括重力),单位为m/s^2double
y沿y轴的加速力(包括重力),单位为m/s^2double
z沿z轴的加速力(包括重力),单位为m/s^2double
UserAccelerometerEvent

与[AccelerometerEvent]一样,这是加速计的离散读数,用于测量设备的速度。然而,与[AccelerometerEvent]不同,该事件不包括重力的影响。

属性

描述

类型

x沿x轴的加速力(不包括重力),单位为m/s^2double
y沿y轴的加速力(不包括重力),单位为m/s^2double
z沿z轴的加速力(不包括重力),单位为m/s^2double

timestamp

事件的时间戳,单位为微秒

DateTime

GyroscopeEvent

陀螺仪的离散读数。陀螺仪测量设备在3D空间中的速率或旋转。

属性

描述

类型

x绕x轴的旋转速率,单位为rad/sdouble
y绕y轴的旋转速率,单位为rad/sdouble
z绕z轴的旋转速率,单位为rad/sdouble

timestamp

事件的时间戳,单位为微秒

DateTime

MagnetometerEvent

磁力计测量传感器周围的环境磁场,返回每个三维轴的微特斯拉(μT)值。

考虑到这些样本可能受到地球磁场的影响以及设备本身的金属或附近磁铁等局部因素的影响,尽管大多数设备都会补偿这些因素。指南针是磁力计数据通用工具的一个例子。

属性

描述

类型

x传感器x轴上的环境磁场,单位为μTdouble
y传感器y轴上的环境磁场,单位为μTdouble
z传感器z轴上的环境磁场,单位为μTdouble

timestamp

事件的时间戳,单位为微秒

DateTime

BarometerEvent

气压计测量传感器周围的大气压力,返回百帕(hPa)的值。
考虑到这些样本可能受到海拔和天气条件的影响,可用于预测短期天气变化或确定海拔高度。请注意,由于操作设备引起的压力变化,防水手机或类似的密封设备在握持或使用时可能会出现压力波动。高度计是气压计数据通用工具的一个例子。

属性

描述

类型

pressure

传感器周围的大气压力,单位为百帕(hPa)。double
timestamp事件的时间戳,单位为微秒DateTime

用法

如果要获取气压计数据,iOS需要访问运动数据。因此必须在应用文件中包含一个名为的键Info.plist。此键提供一条消息,告知用户应用为何请求访问设备的运动数据

info.plist 条目示例:

<key>NSMotionUsageDescription</key>
<string>This app requires access to the barometer to provide altitude information.</string>

示例内容 

import 'package:sensors_plus/sensors_plus.dart';
// 监听设备的加速度(包括重力影响)
accelerometerEventStream().listen(
  (AccelerometerEvent event) {
    print(event);
  },
  onError: (error) {},
  cancelOnError: true,
); // [AccelerometerEvent (x: 0.0, y: 9.8, z: 0.0)]
 
// 监听设备的加速度(不包括重力影响)
userAccelerometerEventStream().listen(
  (UserAccelerometerEvent event) {
    print(event);
  },
  onError: (error) {},
  cancelOnError: true,
); // [UserAccelerometerEvent (x: 0.0, y: 0.0, z: 0.0)]
 
// 监听设备的陀螺仪数据
gyroscopeEventStream().listen(
  (GyroscopeEvent event) {
    print(event);
  },
  onError: (error) {},
  cancelOnError: true,
);// [GyroscopeEvent (x: 0.0, y: 0.0, z: 0.0)]
 
//监听设备的环境磁场
magnetometerEventStream().listen(
  (MagnetometerEvent event) {
    print(event);
  },
  onError: (error) {},
  cancelOnError: true,
);// [MagnetometerEvent (x: -23.6, y: 6.2, z: -34.9)]
 
//监听设备周围的大气压力
barometerEventStream().listen(
  (BarometerEvent event) {
    print(event);
  },
  onError: (error) {},
  cancelOnError: true,
);// [BarometerEvent (pressure: 1000.0)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac 编译 Unreal 源码版本

Mac M3 Pro、XCode 16.0、Unreal 5.4 分享下我本地操作的全流程和遇到的问题 安装 XCodeGithubDesktop 克隆自己 Fork 的仓库运行 Setup.command运行 GenerateProjectFiles.command 出现警告&#xff1a;Platform Mac is not a valid platform to build. Check that the SDK i…

【C】分支与循环1----if与switch

分支与循环 C语言是一门结构化的程序设计语言 顺序结构选择结构循环结构 if语句 if if 语句的语法形式如下: if(表达式)语句表达式成立(为真)&#xff0c;则语句执行&#xff0c;表达式不成立(为假)&#xff0c;则语句不执行 在C语言中&#xff0c;0为假&#xff0c;非0表…

【React】使用脚手架或Vite包两种方式创建react项目

1.使用脚手架搭建React项目&#xff1a; 在终端窗口运行如下命令即可&#xff1a; npx create-react-app react-basic(创建的文件目录) npx&#xff1a;Node.js工具命令&#xff0c;用于查找并执行后续的包命令。 2.使用Vite包创建React项目&#xff1a; 在终端窗口运行如…

Jetpack-Room

Room是Android Jetpack中的一个组件&#xff0c;它提供了一个抽象层&#xff0c;帮助开发者在本地数据库&#xff08;如SQLite&#xff09;上进行持久化数据存储。Room通过简化数据库操作&#xff0c;使得数据管理变得更加容易和高效。 Room重要的概念 实体&#xff08;Entit…

Facebook上的隐私保护:如何加强个人数据的安全性?

在数字化时代&#xff0c;个人数据的保护已成为用户日益关注的话题&#xff0c;尤其是在社交媒体平台如Facebook上。用户在享受社交媒体带来的便利时&#xff0c;如何有效保护个人隐私&#xff0c;维护自身的数据安全&#xff0c;成为了一个亟需解决的问题。 Facebook的隐私保护…

具备技术二:正则表达式

一、C正则库 regex 用于报文的解析。 使用接口&#xff1a;bool regex_match(const string &src, smatch &matches, regex &e); src&#xff1a;要解释的字符串。 smatch&#xff1a;一个类似于数组的结构&#xff0c;用于存储一个个解释之后的字符串。 matche…

若依-医疗系统

项目介绍 湘雅三医院医疗系统是根据长沙市湘雅第三医院来开发的一款后台管理系统&#xff0c;是基于SpringBoot和Vue2开发的一款前端后端分离项目&#xff0c; 项目中包括&#xff1a;1&#xff1a;权限认证&#xff0c;动态菜单2&#xff1a;用户管理&#xff0c;部门管理&am…

2024年诺贝尔物理学奖:机器学习与神经网络的历史性突破

2024年诺贝尔物理学奖的揭晓引发了广泛的讨论&#xff0c;因为这次的获奖者并非传统意义上的物理学家&#xff0c;而是来自机器学习与神经网络领域的研究者——John J. Hopfield 和 Geoffrey E. Hinton。这一决定不仅让人惊讶&#xff0c;也让我们重新思考物理学的边界和诺贝尔…

Microsoft 的指南可帮助缓解 Kerberoasting

随着网络威胁不断演变&#xff0c;安全专业人员必须了解最新的攻击媒介和防御机制。 Kerberoasting是一种众所周知的 Active Directory (AD) 攻击媒介&#xff0c;由于使用 GPU 加速密码破解技术&#xff0c;其有效性正在不断提高。 由于 Kerberoasting 可让网络威胁者窃取凭…

模拟电路设计期末速成总结

模拟电路设计期末速成总结 模拟电路设计是电子工程和电气工程专业中的一门重要基础课&#xff0c;主要研究连续时间信号&#xff08;模拟信号&#xff09;的处理和应用。期末复习时&#xff0c;针对这门课可以分为以下几个关键内容进行速成总结。 一、基本概念与元件 模拟信号…

Python酷库之旅-第三方库Pandas(150)

目录 一、用法精讲 681、pandas.Timestamp.now方法 681-1、语法 681-2、参数 681-3、功能 681-4、返回值 681-5、说明 681-6、用法 681-6-1、数据准备 681-6-2、代码示例 681-6-3、结果输出 682、pandas.Timestamp.replace方法 682-1、语法 682-2、参数 682-3、…

Nest.js 实战 (十四):如何获取客户端真实 IP

问题解析 在 Nest.js 应用中&#xff0c;当你试图通过 request.ip 获取客户端的 IP 地址时&#xff0c;如果总是返回 ::1 或者 ::ffff:127.0.0.1&#xff0c;这通常意味着请求来自本地主机。 因为在前后端分离应用中&#xff0c;前端请求后端服务一般的做法都是通过代理&…

查看记录Linux当前系统环境下已经安装好的CUDA和cuDNN版本信息

在实际工作中&#xff0c;经常需要接触服务器&#xff0c;有时候在实施部署的时候需要对裸机进行安装和部署&#xff0c;涉及到深度学习环境搭建的话就会比较耗时一些&#xff0c;为了简化操作工作以及保证与开发好的模型完美兼容最好的办法就是与我们自己的开发机器保持完全相…

Unity 2D角色的跳跃与二段跳示例

如图&#xff0c;实现这样的效果 其实非常简单&#xff0c;就两个必要条件 触发&#xff1a;一定是按下触发 跳跃次数&#xff1a;一定大于0 声明跳跃次数 public int jumpCount;//多段跳次数 还有一个可以优化的点&#xff0c;就是如果你想角色的多段跳可以有第一次跳的那么…

C语言复习概要(六)

公主请阅 1. 深入理解数组与指针在C语言中的应用1.1 数组名的理解 2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序的实现5. 二级指针6. 指针数组7. 指针数组模拟二维数组8.总结 1. 深入理解数组与指针在C语言中的应用 数组与指针是C语言的核心概念之一&#xff0c;理解…

无极低码课程【mysql windows下安装要点】

在Windows环境中安装MySQL 5.7教程 MySQL 是世界上最流行的开源关系型数据库管理系统之一。本教程将指导您在Windows操作系统上安装MySQL 5.7。 网上教程较多&#xff0c;这里不再详述&#xff0c;注意关键点即可 准备工作 下载MySQL 5.7安装包 访问 MySQL官方网站 下载MyS…

新年好——Dijkstra+Permutation

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int, int> PII; const int N 5e410, M 2e510; const int inf 0x3f3f3f3f; int n, m; int a[6]; int h[N], e[M], ne[M], idx, w[M]; int dist[6][N];…

用Python实现运筹学——Day 17: 0-1 整数规划

一、学习内容 1. 0-1 整数规划的定义 0-1 整数规划是一类特殊的整数规划问题&#xff0c;决策变量只能取 0 或 1。它常用于解决选择问题&#xff0c;如是否选择某个项目、是否执行某个任务等。决策变量 ​ 通常表示“选择”&#xff08;&#xff09;或“不选择”&#xff08;…

实用宝典:元器件外贸独立站电子元件数据库设置完全手册

对于投身于元器件外贸领域的企业来说&#xff0c;如何建立一个既能凸显自身特色又具备高度功能性与良好用户体验的独立站&#xff1f;而在这一过程中&#xff0c;#电子元件数据库#作为独立站的核心要素之一&#xff0c;它的构建质量和管理方式又将如何直接影响网站的整体竞争力…

Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)

引言 想象一下&#xff0c;只要描述你想要的画面&#xff0c;电脑就能帮你画出来。这在几年前还像是科幻小说里的场景&#xff0c;但随着神经网络和潜在扩散模型&#xff08;LDM&#xff09;技术的发展&#xff0c;现在已经成为可能。OpenAI 推出的 DALLE 工具&#xff0c;因其…