记android学习之路----android传感器的使用

手机地磁传感器与常见问题 在手机中,存在不少传感器,例如光距感,陀螺仪,重力加速度,地磁等。关于各传感器,虽功能作用大家都有所了解,但是在研发设计debug过程中,却总是会遇到很多头疼的问题。关于传感器,今日主要讲一下地磁传感器。 阅读详情

移动端和桌面端最大的区别之一就是移动端硬件内置各种传感器,通过这些传感器可以开发很酷炫很实用的功能;以下是对常见的三种传感器的总结整理:

1:传感器的获取:

系统对于传感器的管理是统一的,都由SensorManger来管理;所以在使用某个传感器之前先要获取SensorManger实例,获取方法如下:

    //获取传感器管理器,系统的所有传感器都是通过这个来管理的;
    SensorManger smanger = (SensorManger)getSystemService(Context.SENSOR_SERVICE);

2:获取传感器对象:

传感器实例可以通过SensorManger实例的getDefaultSensor来获取:传入不同的传感器类型常量可以获取不同的传感器:

    //通过getDefaultSensor()来获取任意传感器对象:
    Sensor sensor = smanger.getDefaultSensor(Sensor.XXX);

3:传感器参数的监听:

传感器有测试精度,当精度发生变化的时候就会调用onAccuracyChanged()函数,使用传感器最多就是对传感器参数的监听,因此当传感器参数发生变化的时候就会调用onSensorChanged()函数:

    SensorEventListener sensorEvent = new SensorEventListener(){

        //当传感器精度发生变化的时候就会调用该方法
        public void onAccuracyChanged(Sensor sensor,int accuracy){}

        //当传感器的数字发生变化的时候就会调用这个方法
        //event是个数组
        public void onSensorChanged(SensorEvent event){
            //比如:获取当前传感器参数
            event.values[0]

        }
    }

4:注册:

传感器必须注册之后才能使用:

    //第一个参数是传感器参数的监听实例,第二个是传感器对象,第三个是数据更新频率;有四个值可选;
smanger.registerListener(SensorEventListener sensorEvent,Sensor sensor,SENSOR_DELAY_UI);

5:解除注册:

资源有限,不能浪费;在传感器使用完毕或者应用程序关掉之后一定要释放资源:

smanger.unregisterListener(SensorEventListener sensorEvent)

6:光传感器的使用:

        //下面获取光传感器,获取光传感器需要用Sensor.TYPE_LIGHT:
        Sensor sensor = smanger.getDefaultSensor(Sensor.TYPE_LIGHT);
        //在传感器参数变化监听中获取光照强度:
        public void onSensorChanged(SensorEvent event){
            //比如:获取当前传感器参数
            event.values[0];
        }

7:加速度传感器:

        //获取光传感器;使用:Sensor.ACCELEROMETER
        Sensor sensor = smanger.getDefaultSensor(Sensor.ACCELEROMETER);


        //获取当前传感器参数,加速度传感器参数有三个:代表xyz轴:
        event.values[0]  //X
        event.values[0]  //y        
        event.values[0]  //z    

8:方向传感器:

第一种方式:

获取方向传感器实例:

        //获取方向传感器
        Sensor sensor = smanger.getDefaultSensor(Sensor.ORIENTATION);

获取方向传感器参数:

        /获取当前传感器参数,方向传感器参数有三个:代表xyz轴:
        event.values[0]  //沿X的旋转角度
        event.values[0]  //沿y的旋转角度      
        event.values[0]  //沿z的旋转角度  

第二种方式:

第一种方式过于简单,参数也不是辣么准确,之后google提供了下面这种方式,获取精度较高,页是最为推荐的使用方式:
这种方式是通过加速度传感器和地磁传感器共同获取到的:
获取传感器管理对象:


    SensorManger smanger = (SensorManger)getSystemService(Context.SENSOR_SERVICE);

获取传感器实例:

    //通过getDefaultSensor()来加速度传感器对象:
    Sensor sensorspeend = smanger.getDefaultSensor(Sensor.ACCELEROMETER);

    //通过getDefaultSensor()来获取地磁传感器对象:
    Sensor sensorci = smanger.getDefaultSensor(Sensor.MANGETIC_FILED);

注册传感器:

    //加速度传感器注册:
smanger.registerListener(SensorEventListener sensorEvent,Sensor sensorspeend,SENSOR_DELAY_GAME);

    //地磁传感器注册:
smanger.registerListener(SensorEventListener sensorEvent,Sensor sensorci,SENSOR_DELAY_GAME);

获取传感器参数

SensorEventListener sensorEvent = new SensorEventListener(){

        //当传感器精度发生变化的时候就会调用该方法
        public void onAccuracyChanged(Sensor sensor,int accuracy){
            //暂时不做处理
        }
        /声明两个float数组,来存放地磁传感器和加速度传感器的参数;
        float[] acc = new float[3];
        float[] man = new float[3];

        //当传感器的数字发生变化的时候就会调用这个方法
        //event是个数组
        public void onSensorChanged(SensorEvent event){
            //获取当前传感器参数
            if(sensor == Sensor.ACCELEROMETER){
                //获取加速度传感器参数
                acc = event.values.clone()
            }else if(sensor == Sensor.MANGETIC_FILED){
                //获取地磁传感器的参数
                man = event.values.clone()
            }

            //用于存放R矩阵的数组
            float[] R = new float[9];
            //用于存放手机旋转最终结果的数组
            float[] values = new float[3];

            //获取R矩阵数据
            getRotationMatrix(R,null,acc,man); 
            //获取具体的旋转数值;0,1,2下标分别代表x,y,z
            smanger.getOritation(R,values); 
            //把数值转换为角度:
            xDergree = Math.toDegrees(values[0]);
            yDergree = Math.toDegrees(values[1]);
            zDergree = Math.toDegrees(values[2]);
        }
    }
android 磁场传感器应用 因公司有时需要测试某线圈磁场强度,特萌生一个用手机来测量的想法,并简单代码实现: 界面没时间精力弄,简单弄了几个文本框加进度条显示了事: 代码也简单: private SensorListener sensorl = new SensorListener(){ @Override public void onAccuracyChanged( int sensor, in 阅读详情

相关推荐

安卓传感器的简单使用

前言前言介绍一些传感器的api利用加速传感器 简单实现计步器 前言 这学期学习了移动软件开发课程后,自己尝试实现了个小功能,就是利用手机自带的加速传感器实现个简单的计步器。 介绍一些传感器的api 一般来说,智能机中都支持一下常见的传感器 如:温度传感器(tempreture sensor);压力传感器(pressure sensor);光传感器(light sensor);加速度传感器(accelerometer sensor)等等等等; 传感器有几个比较重要的API: SensorManager(用以获

weixin_43420684的博客 2562

Android 传感器 I-传感器基本介绍

Android 传感器 I-传感器基本介绍; 信息来自官网. 大多数Android设备都有内置的传感器用来测量运动, 方向和多种环境状况. 这些传感器可以提供高精度的原始数据, 如果我们想要监测三维设备移动或者位置或者想要监测环境改变的话, 它们都很有用.

宇文 1802

android传感器学习之获取传感器的值

在上一篇中,讲到了怎么获取手机的传感器http://blog.youkuaiyun.com/nainai007/article/details/7615364,在这里是获取传感器的值。 要获取传感器的值,首先要为应用程序注册传感器时间,然后接受传感器传来的数据。 MainActivity的代码为: package com.nine.sensordemo; import android.app.Ac

Nine 部落 1万+

Android传感器的使用总结

随着手机的发展,现在各大手机支持的传感器类型也越来越多,在开发中利用传感器进行某些操作令人们有一种耳目一新的感觉,例如微信中的摇一摇,以及手机音乐播放器中的摇一摇切歌。今天来简单介绍下Android中传感器的使用以及一些常用的传感器。

wenzhi的博客 2万+

android传感器学习之获取手机传感器

在做手机开发的时候,我们有时会使用到传感器,特别是在游戏开发中。下面我没来学习一下传感器的获取。 在这里我们需要一部真实的android手机,我使用的是华为的c8650。 获取手机中的传感器的步骤为: 获取SensorManager对象执行SensorManager对象的getDefaultSensor()方法获取Sensor对象,这里getDefaultSensor()方法要传递一

Nine 部落 1万+

Android学习笔记之——手机中几种自带传感器的应用

本博文学习一下Android中几种传感器的应用 目录 Android传感器 使用传感器步骤 Demo Test 查看手机支持哪些传感器 界面布局 传感器list 光传感器 磁场传感器 参考资料 Android传感器 传感器就是通过对外界信号的感受和探测,并按照一定的规律把这些信号转成我们需要的信息的一些微型物理设备,比如我们的手机中就存在很多传感器。android中提供了相应的接口,让我们可以访问这些传感器,并使用他们的数据。与传感器交互需要使用Sensor对象。Senn..

gwpscut的博客 2189

Android学习——传感器

传感器(本机传感器) 概述 大多数安卓设备都内置了传感器,用来测量移动,方向和各种环境条件。 Android平台支持以下三类传感器: 这些传感器能够提供精度高且准确的原始数据。 如果要监视三维设备运动或定位,或者监视设备周围的环境变化,那么传感器会极其有用。 例如:游戏可以追踪设备重力感应器的读数来推断复杂的用户手势和动作,比如倾斜,摇晃,旋转或摆动。 同样地,天气应用程序可以使用设备温度传感器...

UUUUUltraman的博客 1026

安卓传感器的简单使用,kotlin搭建网站

前言 这学期学习了移动软件开发课程后,自己尝试实现了个小功能,就是利用手机自带的加速传感器实现个简单的计步器。 介绍一些传感器的api 一般来说,智能机中都支持一下常见的传感器 如:温度传感器(tempreture sensor);压力传感器(pressure sensor);光传感器(light sensor);加速度传感器(accelerometer sensor)等等等等; 传感器有几个比较重要的API: SensorManager(用以获取SensorManager实例,提供各种方法例如访问传感

wqwq_22的博客 663

Android学习之传感器的简单使用

Android学习之传感器的简单使用   1. SensorManager类   SensorManager类用来管理各个传感器:通过SensorManager创建实例,并用getSystemService(SENSOR_SERVICE)获取传感器服务。   使用其getSensorList()方法,可以获取所有可用的传感器该方法返回一个List<Sensor>,即Sensor对象的...

明昕ztoy的博客 743

Android 中磁场传感器的使用详解

一、创建自定义View PointerView类,并且根据x轴和y轴磁场强度绘制指针 public class PointerView extends View implements SensorEventListener { private SensorManager sensorManager; private Bitmap pointer; private float[] allValue; public PointerView(Context context, @N

路宇的博客 2720

从逻辑门到存储阵列:NAND与NOR闪存命名与结构原理详解

在数字电路与半导体存储器领域,逻辑门是构建一切复杂功能的基础单元,其输入输出关系定义了计算与存储的基本原理。与非门(NAND)和或非门(NOR)作为通用逻辑门,其真值表和行为模式深刻影响了芯片设计。基于这些原理,现代闪存技术发展出了两种核心架构:NAND Flash和NOR Flash。这两种闪存的命名直接源于其内部存储单元阵列的连接方式,分别模拟了与非门和或非门的逻辑关系。这种结构差异决定了它们根本的技术价值:NOR Flash采用并联结构,支持快速随机读取,适用于代码存储与原地执行(XiP);而NAND

weixin_33377602的博客 342

Android学习-传感器的使用

Android中的MEMS传感器有很多种,本节主要介绍各个传感器的使用方法。

逍遥林 1766

将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT

虽然深度学习方法(1D CNN, RNN, LSTM 等)可以直接处理一维数据,但是当前的深度学习方法主要还是处理二维结构数据的,特别是在计算机视觉CV以及自然语言处理NLP领域,各种各样的方法层出不穷。因此,如果能够将一维序列数据转化为二维(图像)数据, 则可以直接结合CV以及NLP领域的方法,是不是很有趣! GAF, GASF, GADF, MTF, Recurrence Plot, STFT, 短时傅里叶变换

MasterQKK 5万+

Android 学习笔记8——传感器使用

我大一时候买的安卓手机共有三个传感器,分别是: 3-AXIS ACCELEROMETER (三轴加速度计) Proximity Sensor (接近度传感器) Light Sensor (光线传感器) 在程序中使用的方法如下: package com.example.test; import java.util.List; import android.app.Activit

鞠培中的专栏 683

记录——影刀RPA高级操作题(二)——使用影刀RPA内置包和”Xpath“获取数据,获取数据写入目标MySQL

【代码】记录——影刀RPA高级操作题(二)——使用影刀RPA内置包和”Xpath“获取数据,获取数据写入目标MySQL。

m0_74824002的博客 842

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 681

安卓学习日记——传感器

概述 大多数安卓设备都内置了传感器,用来测量移动,方向和各种环境条件。 Android平台支持以下三类传感器: 这些传感器能够提供精度高且准确的原始数据。 如果要监视三维设备运动或定位,或者监视设备周围的环境变化,那么传感器会极其有用。 例如:游戏可以追踪设备重力感应器的读数来推断复杂的用户手势和动作,比如倾斜,摇晃,旋转或摆动。 同样地,天气应用程序可以使用设备温度传感器和湿度传感器来计算并...

chen_xiaoke的博客 325

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1650

关于安卓传感器时间sensorEvent.timestamp的学习

安卓传感器时间戳sensorEvent.timestamp 最近做的毕设和行为识别相关,老师给了他们实验室的一个数据采集APP用来采集加速度数据。但是我发现采集数据的时间戳如下: 15 28 20 begin 0.16199169 0.0014652514 9.872587 26956276798626 0.16119681 0.027150247 9.896097 26956296798626...

dong_liuqi的博客 4103

把 SAP OData 查询模式讲透:从 $select 到 $expand 的设计、实现与性能边界

摘要:本文深入探讨SAP生态中OData查询模式的核心设计与实现要点。文章指出,OData不仅是接口协议,更是HTTP、REST与数据模型的统一语言,其性能关键取决于查询选项($select、$filter等)的设计与实现质量。重点分析了$select的投影优化、$orderby的排序语义、$filter的数据库下推策略,以及$count的高效计数方法。通过具体示例和最佳实践,强调应将查询逻辑尽量下推至数据库层,避免在ABAP应用层处理大数据集,从而提升服务性能、降低资源消耗,实现Clean Core架构理

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 649

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 168

安卓传感器的简单使用(1)

介绍一些传感器的api利用加速传感器 简单实现计步器前言这学期学习了移动软件开发课程后,自己尝试实现了个小功能,就是利用手机自带的加速传感器实现个简单的计步器。介绍一些传感器的api一般来说,智能机中都支持一下常见的传感器如:温度传感器(tempreture sensor);压力传感器(pressure sensor);光传感器(light sensor);加速度传感器(accelerometer sensor)等等等等;传感器有几个比较重要的API:SensorManager(用以获取SensorMana

2401_84132496的博客 634

YOLOv11 快速入门指南 | 10分钟吃透网络结构与新特性

2024 年 9 月 30 日,Ultralytics 发布了 YOLOv11,这是继 YOLOv8、v9、v10 之后的最新一代实时目标检测模型。 与前几代相比,YOLOv11 在保持“单阶段、实时、端到端”三大基因的同时,带来了两大核心升级:一句话总结:YOLOv11 = 更快 + 更准 + 更少参数。 2.2 微观单元:C3k2 与 C2PSA 2.2.1 C3k2 模块 作用:替换 YOLOv8 的 C2f,做跨阶段局部特征融合。 核心代码(ultralytics/nn/modules/block

shrgegrb的博客 1407
上一篇: 记android学习之路----android多媒体使用之短信的收发
下一篇: 记android学习之路----android中的一些小技巧
nextli
博客等级 码龄11年 0粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值