4.16-1 感应器Sensor

手机传感器-G-Sensor 阅读详情
1: 列出收集里面到底有多少个传感器.


先弄一个ListView
<ListView
id sencor_list
wid mat
hei mat
/>


在onCreate 方法里面列出所有的传感器信息,显示出来
使用ArrayAdapter就好了
ArrayList<String> names = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,android.R.layout.simple_list_item_1,names
);


//传感器的管理,通过这个类,来获取,操作,设置传感器
SensorManager sensorManager =(SensorManager)getSystemService(SENSOR_SERVICE);
//获取制定类型的传感器Sensor.TYPE_ALL 代表获取所有
List<Sensor> sensorList =sensorManager.getSensorList(Sensor.TYPE_ALL);




++++++++++++++++++++++++++++++++++++
计步传感器,SENSOR_就 有现成的 。
++++++++++++++++++++++++++++++++++++


for(Sensor sensor: sensorList){
//便利传感器的类型;
String name=sensor.getName();
//sensor.getStringType();
String vendor = sensor.getVendor();//厂商

names.add(name+""+vendor)
}




怎么做摇一摇呢?
思路:1:获取手机中指定类型的传感器,例如加速度传感器;


添加一个textView id为txt_info


//传感器的处理:加速度传感器
获取一个也是通过sensorMaanger
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROTER);//获取默认指定类型传感器,唤醒的
//注意传感器可能是空的null,因为根本没有这个传感器。
if(sensor !=null){

}


什么时候晃不知道,我们没有办法与当前的情况,所以我们要频繁的获取。
轮询的方式,这样很耗电的。


2:传感器的运行的原理,传感器会获取当前的环境状态数值,不能预知之后,
如果要使用的时候,进行检测,就需要程序一直不停的获取传感器的数值。进行比对和计算,才能知道当前的手机的变化。


3:那么程序通过SensorManager 想指定的传感器进行注册,注册一个监听器。
每隔一段时间,检测传感器的数值,返回给监听器。


if(sensor!=null){


//注册传感器的监听,用于接受传感器的数据


//不需要使用传感器的时候,一定要取消注册,不然很耗内存
sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);
有四种 SensorManager.SENSOR_DELAY_,
1:FASTEST 最精细的。最多的。
2:GAME 游戏的
3:NORMAL 普通的
4:。。了解就好了



实现SensorEventListener这个接口
实现相应的方法
传感器数据变化,收到数值
onSensorChanged()
精度发生变化的时候,可以认为是每秒钟获取的次数,这个基本上是用不到的,例如频率是从快了到慢了,从慢了到快了。
onAccuracyChanged()
}


传感器,如果不释放的话 ,你的手机会一直接听


onDestory(){
//取消监听器
if(sensor!=null)
//取消特定传感器的接受;如果只有一个参数相当于取消这个接口的所有传感器。
sensorManager.unregisterListener(this,sensor);
}


onSensorChanged(SensorEvent event){
//TODO: 处理数据
//获取传感器数据,每种传感器数据个数不同,也就是数据内容个数不同

float[] values=event.values;
//判断传感器类型,处理不同的数据
Sensor sensor =event.sensor;


int type = sensor.getType();//获取传感器类型:


switch(type){
case Sensor.TYPE_ACCELEROMETER://检测加速度传感器
//三个数值,x,y,z

float x = values[0];
float y = values[1];
float z = values[2];
Log.d("SensorActivity","x="+x+"y="+y+"z="+z);
break; 
}

}


手机拿的时候
x,y,z 是加速度,而不是距离。
关于摇一摇的算法,假如想,x,y,z 如果是任何一个加速度的值大于10或者13那么我认为是在摇一摇。


添加一个成员变量
private int count;
private long lastTime;


然后在onSensorChangel 里面
if(Math.abs(x)>12||Math.abs(y)>12||Math.abs(z)>12){
count++;
long ct = System.currentTimeMillis();
if(lastTime==0){
lastTime=ct;
}else{
if(ct-lastTime>3000){
lastTime=ct;
count=1;
}
}


if(count >5){
//TODO 代表摇一摇了
Toast.makeText(this,"摇一摇了",Toast.LENG);
count=0;
}
}






如果是LIGET:


在switch里面


case Sensor.TYPE_LIGHT:


float lightValue = values[0];
Log.d("SensorLight","light value"+lightvalue)
break;


亮度:
1.SensorManager.LIGHT_XXX常量来定义亮度的
SensorManager.LIGHT_CLOUDY 100
SensorManager.LIGHT_FULLMOON
SensorManager.LIGHT_NO_MOON 0.001
SensorManager.LIGHT_OVERCAST 10000
SensorManager.LIGHT_SHADE
SensorManager.LIGHT_SUNLIGHT  110000
SensorManager.LIGHT_SUNLIGHT_MAX  120000
SensorManager.LIGHT_SUNRISE 400




什么时候需要











































































MTK Android Driver :sensor 16. 传感器 MTK_SENSOR_SUPPORT= yes CUSTOM_KERNEL_ACCELEROMETER= auto//重力加速度传感器 CUSTOM_KERNEL_MAGNETOMETER=akm8975//磁力感应器// CUSTOM_KERNEL_ALSPS= tmd2771//光感距离传感器 CUSTOM_KERNEL_BAROMETER=//气压计 CUSTOM... 阅读详情

相关推荐

SensorList传感器数据测试

传感器列表Sensor List是一款列出设备上所有传感器数据变化值的应用。测试数据包括加速度,磁场,方向,温度,光等

C++: 匿名 函数

mSensors->getSensorsList([&](const auto &list) {...}); 代码里出现 [], [&] 看不懂是什么意思? C++ lambda表达式与函数对象 - 简书C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码...https://www.jianshu.com/p/d686ad9de817这篇文章讲的很清楚

u011279649的专栏 461

Win11内核隔离无法打开的解决方案详解

内核隔离问题的解决需遵循"先硬件后软件"的排查原则,90%以上的案例可通过驱动清理或外设断开解决。对于必须禁用该功能的用户,建议定期使用Windows Defender进行全盘扫描,并保持系统更新至最新版本。技术决策需在安全性和兼容性之间取得平衡,本文提供的多维解决方案可帮助用户构建更稳定的Windows 11使用环境。

mmoo_python的博客 4830

Sensor传感器相关的方法以及使用套路

Sensor传感器相关的方法以及使用套路 从2中的例子我们可以大概地总结下获取Sensor传感器以及获取传感器相关的一些信息流程如下: 1)Sensor传感器的相关方法 Step 1:获得传感器管理器: SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); Step 2:获得设备的传感器对象的列表:

山城木府 1万+

从晶体管到触发器:为什么芯片设计必须区分同步/异步复位?

本文深入探讨了芯片设计中同步复位与异步复位的物理本质与工程权衡。从晶体管级的CMOS结构出发,剖析了两种复位方式在物理实现、时序可靠性(如建立/保持时间、恢复/移除时间)上的根本差异,并分析了在不同应用场景下的选择策略。文章强调,理解复位信号的底层机制对于确保芯片时序收敛、系统上电确定性及整体鲁棒性至关重要。

time3的博客 221

电磁仿真新手必看:如何用CST Studio Suite 2023完成第一个PCB辐射仿真?

本文详细解析了如何使用CST Studio Suite 2023进行PCB辐射仿真,适合电磁仿真新手快速上手。从工程准备、求解器配置到端口设置和后处理技巧,全面覆盖三维全波电磁场仿真软件的核心操作步骤,帮助工程师精准预测和解决PCB电磁辐射问题。

y7z8a9的博客 733

自学Android之获取传感器列表

1,用系统API来获取传感服务。 ​SensorManager = getSystemService(SENSOR_SERVICE); 2,调用getSensorList方法来获取全部的传感器类型 List sensors = SensorManager.getSensorList(Sensor.TYPE_ALL); ​​ 3,查看每个传感器的名字

六盘的博客 1374

lidar点云比赛-Southlidar软件使用入门

lidar点云比赛-Southlidar软件使用入门 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院: 智控无人机小组 写作时间:2020.09.29 一、软件资源及安装 1.下载地址: https://pan.baidu.com/s/1jN1pynmAZOqj5mMx774pVg 提取码:gkvv (资源来自南方测绘) 2.安装 进入链接,找到软件文件夹, 内含文件即为安装包 3.下载成功后按提示安装即可 4.安装成功后桌面自动创建一个快捷方式 二、界面布

qq_49621416的博客 4891

Android传感器

一、传感器的获取 1、Android所有的传感器都归传感器管理器 SensorManager 管理,获取传感器管理器的方法: String name = Context.SENSOR_SERVICE; SensorManager sensorManager = (SensorManager)getSystemService(name); 2、现行Android

Z_L_P的博客 771

汽车OTA安全启动:ECU双验签机制与实战排障指南

汽车OTA升级中的安全启动,本质是基于密码学的信任建立过程,其核心在于ECU上电时对固件镜像的可信验证。该机制依托硬件信任根(Secure Boot ROM),通过RSA/ECDSA等非对称算法完成签名验签,确保升级包未被篡改且来源可信。技术价值体现在防止恶意固件注入、支撑功能安全(ASIL)与信息安全(ISO/SAE 21434)合规。典型应用场景包括4S店远程升级、BMS控制器固件更新及多ECU协同启动。实践中,验签名失败往往源于证书链断裂、Flash布局错位或KeyUsage字段不匹配等底层工程细节,

weixin_29314405的博客 77

GD32 TIMER0 PWM输出死活没波形?别忘了这个关键配置(附完整代码)

本文详细解析了GD32 TIMER0 PWM输出无波形的常见问题,特别强调了高级定时器特有的主输出使能配置。通过完整的代码示例和调试技巧,帮助开发者快速解决PWM输出问题,适用于无刷电机控制等嵌入式应用场景。

weixin_30906185的博客 397

Android 笔记 传感器(Sensor)

Sensor数据的获得首先要明确的一点就是,获得的传感器数据都是原始数据,即便有一些便利方法,但是也需要获得很多原始数据参数来计算。因此,很多时候需要自己编写函数来通过这些原始数据计算出自己需要的内容。比如照片的方向。照片的方向的问题在正常竖屏的状况下,CAMERA传感器的角度是90度,在设置里面设置一个orientation值就可以在显示的时候将照片转过来。但是,横屏拍摄以后,照片角度会保持成横屏

super_zq的博客 818

实例详解C++程序的五大内存分区

本文详细讲述C++程序在运行时的5大内存分区。 下面使用日常开发中的编程实例,详细介绍一下这5个分区,以便大家能更深刻的理解这5大内存分区。 1、栈内存区 栈内存区是我们用的最多的分区,只要有函数的地方都会使用到这个分区。栈分区是用来存放函数参数及函数局部变量值的内存区,是由编译器在编译时自动分配和释放的。 函数中的参数与函数中的局部变量占用的内存是代码执行到函数(进入函数)是分配的,在............

dvlinker的技术专栏 1万+

rk平台 linux系统 光距离感应器stk3332驱动调试

linux驱动开发

Small_Dreamer的博客 1276

6、基于深度强化学习的无人机路径规划

本文介绍了一种结合人工势场法的改进DQN深度强化学习算法在无人机路径规划中的应用。通过设计合理的网络结构、状态空间、动作空间和融合引力-斥力机制的奖励函数,实现了无人机在复杂环境中的自主避障与目标导向飞行。采用轻量级神经网络提升实时性,并在Gazebo仿真环境中进行训练与测试,结果表明该算法具有快速收敛、高成功率和良好适应性。实验评估指标包括损失函数、最大Q值和任务成功率,验证了方法的有效性。文章还探讨了其在物流配送、农业植保和环境监测等领域的应用前景,并展望了多无人机协同与复杂环境适应性等未来研究方向。

html8的博客 242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java 感应器系统_Android Sensor传感器系统架构初探

1. 体系结构2. 数据结构3. 四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1. 体系结构Android的体系结构可分为4个层次。第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此第二层次 Android标准C/C++库,包括硬件抽象层,Android各底层库,本地库,JNI...

weixin_39707536的博客 207

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android重力感应器Sensor编程

添加当重力变化时的处理函数 在创建监听器时调用的函数 doSomething(x, y, z) 是自己定义的方法。 当手机倾斜方向改变时,监听器会调用该方法。 我们要做的,就是填充该方法,用于在重力发生变化时进行我们自己的处理。 当 x=y=0 时,手机处于水平放置状态。 当 x=0 并且 y&gt;0 时,手机顶部的水平位置要大于底部,也就是一般接听电话时手机所处的状态。 ...

java-admin 208

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

16、传感器(Sensor)

一、什么是传感器 传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其他装置或器官。国家标准GB7665—87对传感器的定义是:“能感受规定的被测量并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。传感器是一种检测装置,能感受被测量的信息,并能将检测的感受到的信息,按一定规律变换成为电...

dianwei5413的博客 335

android驱动sensor框架

1. sensor架构之App层;2. sensor架构之Framework层;3. sensor架构之Libraries层;4. sensor架构之HAL层;5. sensor架构之Driver。 1. sensor架构之App层下面以g-sensor为例,写一个简单的apk,看一下sensor在App层到底是如何工作的,一般需要下面四个步骤来实现一个sensor应用。Step1:通过getSy...

luowei3oo的专栏 1256

4.16 Android 感应器实现摇一摇的功能

一定要记住的是,在onDestroy方法里面取消监听器的注册。不然会很耗电的。 package tech.androidstudio.sensordemo; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import

Kodulf的专栏 809

【Based Android】Android Sensor感应器介绍(二)线程中刷新UI 创建一个android测力计...

上一篇文章http://www.cnblogs.com/octobershiner/archive/2011/11/06/2237880.html介绍了sensor的基本知识以及一个使用其中加速度感应器获取数据的例子。 提到过一个问题,就是说感应器刷新频率太快,假如我们要做一个UI中,需要根据方向数据绘制一个一个移动的箭头,那么就要太过频繁的刷新绘制界面,占用很多的资源,体验性也会很差,《a...

weixin_34032792的博客 164

ESP32学习笔记(16)——Touch Sensor(触摸按键)接口使用

一、简介 电容式触摸感应技术已经广泛应用于家用电器、消费电子等领域,以此发展的触摸按键产品与传统按键相比按键有下面的优点: 无机械装置,不宜磨损老化,超长使用寿命。 表面无缝隙,无水分、杂质渗透。 减少元件使用,BOM 成本降低。 面板不需开孔,工业设计成本降低。 产品外观美观,设计灵活。 电容式触摸感应技术通过测量面板(传感器)和其环境之间的电容变化来检测触摸界面附近是否有触摸事件发生。 下面一个典型的触摸传感器系统组成的示意图。 保护覆盖层 保护覆盖层是指触摸面板。触摸面板必须是绝缘材质,作用

Leung的博客 1万+

Android Sensor学

这两天在看传感器部分,如下所说使用了hwmsensor控制所有的传感器,跟这里的代码和具体的代码之后最终调用到了attach,如下所示: MTK代码里使用了一个hwmsensor模块控制所有的sensor。 代码路径:mediatek/kernel/drivers/hwmon/hwmsen/hwmsen_dev.c,编译成hwmsen_dev.o,系统起来后会生成/dev/hwmsen

pc102的专栏 1673
上一篇: 二维码
下一篇: 2.3-2 GitHub 手机端
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值