传感器的使用

传感器类型:方向、加速度(重力)、光线、磁场、距离(临近性)、温度等。

方向传感器:   Sensor.TYPE_ORIENTATION

加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER

光线传感器:    Sensor.TYPE_LIGHT

磁场传感器:   Sensor.TYPE_MAGNETIC_FIELD

距离(临近性)传感器: Sensor.TYPE_PROXIMITY

温度传感器:   Sensor.TYPE_TEMPERATURE

//获取某种类型的感应器

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

//注册监听,获取传感器变化值

sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);

上面第三个参数为采样率:最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对传感器子系统的一个建议,不保证特定的采样率可用。

最快: SensorManager.SENSOR_DELAY_FASTEST

最低延迟,一般不是特别敏感的处理不推荐使用,该种模式可能造成手机电力大量消耗,由于传递的为原始数据,算法不处理好将会影响游戏逻辑和UI的性能。

游戏: SensorManager.SENSOR_DELAY_GAME

游戏延迟,一般绝大多数的实时性较高的游戏都使用该级别。

普通: SensorManager.SENSOR_DELAY_NORMAL

标准延迟,对于一般的益智类或EASY级别的游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。

用户界面: SensorManager.SENSOR_DELAY_UI

一般对于屏幕方向自动旋转使用,相对节省电能和逻辑处理,一般游戏开发中我们不使用。

指南针Demo:

  

 1 package com.android.hzy.sensor;
 2
 3 import android.app.Activity;
 4 import android.content.Context;
 5 import android.hardware.Sensor;
 6 import android.hardware.SensorEvent;
 7 import android.hardware.SensorEventListener;
 8 import android.hardware.SensorManager;
 9 import android.os.Bundle;
10 import android.view.animation.Animation;
11 import android.view.animation.RotateAnimation;
12 import android.widget.ImageView;
13
14 public class MainActivity extends Activity {
15
16     private SensorManager sensorManager;
17     private Sensor sensor;
18     private MySensorEventListener listener;
19     private ImageView iv;
20
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25
26         iv = (ImageView) findViewById(R.id.iv);
27         iv.setKeepScreenOn(true);// 保持屏幕的高亮
28
29         // 得到sensor管理器
30         sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
31         sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);// 得到方向传感器
32
33         listener = new MySensorEventListener();
34
35     }
36
37     /**
38      * 第三个参数为采样率:最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对传感器子系统的一个建议,不保证特定的采样率可用。
39         最快: SensorManager.SENSOR_DELAY_FASTEST
40         最低延迟,一般不是特别敏感的处理不推荐使用,该种模式可能造成手机电力大量消耗,由于传递的为原始数据,算法不处理好将会影响游戏逻辑和UI的性能。
41         游戏: SensorManager.SENSOR_DELAY_GAME
42         游戏延迟,一般绝大多数的实时性较高的游戏都使用该级别。
43         普通: SensorManager.SENSOR_DELAY_NORMAL
44         标准延迟,对于一般的益智类或EASY级别的游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。
45         用户界面: SensorManager.SENSOR_DELAY_UI
46      */
47
48     @Override
49     protected void onResume() {
50         // TODO Auto-generated method stub
51         super.onResume();
52         // 注册sensor监听  传感器非常的消耗性能,显示在前台的时候再注册监听
53         sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
54     }
55
56     @Override
57     protected void onPause() {
58         // TODO Auto-generated method stub
59         super.onPause();
60         // 取消监听
61         sensorManager.unregisterListener(listener);
62     }
63
64     /**
65      * 传感器事件监听
66      * @author Administrator
67      *
68      */
69     private final class MySensorEventListener implements SensorEventListener{
70
71         private float predegree = 0;
72
73         @Override
74         public void onSensorChanged(SensorEvent event) {
75             // TODO Auto-generated method stub
76             float x = event.values[SensorManager.DATA_X];
77             float y = event.values[SensorManager.DATA_Y];
78             float z = event.values[SensorManager.DATA_Z];
79
80             // 指南针只需用到X轴
81             RotateAnimation animation = new RotateAnimation(-predegree, x, //
82                     Animation.RELATIVE_TO_SELF, 0.5f, //
83                     Animation.RELATIVE_TO_SELF, 0.5f);
84
85             animation.setDuration(200);
86             iv.startAnimation(animation);
87
88             predegree = x;
89         }
90
91         @Override
92         public void onAccuracyChanged(Sensor sensor, int accuracy) {
93             // TODO Auto-generated method stub
94
95         }
96
97     }
98
99 }
时间: 2024-10-25 00:11:17

传感器的使用的相关文章

传感器到底需要什么样的电路板

传感器,英文名称transducer,是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输.处理.存储.显示.记录和控制等要求. 按照制造工艺来分类的话: 集成传感器是用标准的生产硅基半导体集成电路的工艺技术制造的.通常还将用于初步处理被测信号的部分电路也集成在同一芯片上,例如现在大力发展的MEMS传感器. 薄膜传感器则是通过沉积在介质衬底(基板)上的,相应敏感材料的薄膜形成的.使用混合工艺时,同样可将部分电路制造在此基板上

进阶篇-安卓系统:4.安卓手机动作传感器

动作传感器对于监测设备的移动非常有用,例如:倾斜.震动.旋转和摆动都属于动作传感器的监测范围.设备的移动通常是对用户输入的直接反应. 所有动作传感器都会返回三个浮点数的值,对于不同的传感器,这三个值的意义不同.例如,对于加速度传感器,会返回三个坐标轴的加速数据.对于陀螺仪传感器,会返回三个坐标周的旋转角速度. 动作传感器的使用与数据返回:加速度传感器 如果单纯的使用加速度传感器传回的数据,会发现Z轴的的加速度是9.8多.所以看来安卓是把静止的手机竖直加速度默认为重力加速度,并且XY轴的数据也不是

Android12_播放器_surfaceVIew_照相机_传感器

编程的时间与空间的概念,两者不可兼得(技术固定),时间换空间,空间换时间 sufaceView占用比较大的空间但是效率高 1,音乐播放器 MediaPlayer ①同步的 大致流程按下图走即可,播放最好写在服务里,因为要在后台播放 1.1 new出来的mediaplayer 默认处于Idie(空闲),reset()也可以让其处于初始状态 1.2 setDataSource()设置好文件之后就处于Initialized()初始化状态 1.3 可以通过setOnErrorListener方法查看播放

传感器网络的路由

1.传感器网络的路由特点 传感器网络作为一种自组织的动态网络,当节点失效.新节点加入导致网络拓扑结构动态变化时需要网络能够自动愈合.传感器网络中路由的关键技术就是多跳自组织的网络路由协议,另外传感器网络中的路由机制还需要与数据融合技术联系在一起.根据不同的传感器网络应用,一共有四种思想的路由协议.能量感知路由是高效利用网络能量的路由协议,它侧重点是最少能量消耗和最长网络生存期等问题:基于查询的路由比较适合环境检测方面的应用,在这类应用中需要不断地的查询传感器节点采集的数据,通信流量集中在汇聚节点

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android操作系统11种传感器介绍

#define SENSOR_TYPE_ACCELEROMETER 1 //加速度 #define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 #define SENSOR_TYPE_ORIENTATION 3 //方向 #define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪 #define SENSOR_TYPE_LIGHT 5 //光线感应 #define SENSOR_TYPE_PRESSURE 6 //压力 #define SENSOR_TYP

Android传感器应用_指南针(《第一行代码》教程)

1.检测你的手机里有哪些传感器 CheckSensor.java代码架构 1.使用一个ScrollView包裹的TextView把所有的传感器厂家.设备名称.版本.类型编号等打印出来 2.其中为了得到传感器名字,使用了一个静态内部类,这个静态内部类的作用是把(int)Sensor.getType()转化成对应的传感器名字 这个内部类唯一的方法,getSensorTypeName(int type)就是为了起到这个作用 package com.example.checksensor; import

002.光流传感器(ADNS0380版)使用说明

先放广告,以下是光流传感器购买地址(全网最低价并且唯一提供代码支持的): https://item.taobao.com/item.htm?spm=a230r.1.14.63.j2eDn3&id=541014211123&ns=1&abbucket=12#detail 如果模块直接使用在APM飞控上请看下文标题一内容,如果使用传感器作为二次开发请看下文标题二内容. 一.APM2.5与传感器模块连接图 二.提供的代码请按以下连线使用,传感器与stm32连接: GND    ---- 

手机、平板、可穿戴的新风向:ROHM高精度光学脉搏传感器

进入2017年,就在业界为即将到来的物联网产业大机遇而倍感兴奋的时候,Gartner的一份最新调查却迎头泼了一盆凉水:消费者最初被可穿戴设备的新奇功能和华丽外表所吸引而购买,但是有近三分之一的用户在使用一段时间后感到无聊然后抛弃了它们,智能手表弃用率为29%.健身类可穿戴设备弃用率为30%. 除了可穿戴设备外,智能手机与平板电脑也进入了创新乏善可陈的境地.根据Gartner,2016年全年智能手机销售量15亿部.较2015年增加5%,其中虽然苹果在两年后重夺全球智能手机龙头厂商,但在2016年第

AM2320 温湿度传感器 C51程序 uart串口输出温湿度

实物图 引脚图 接线图 效果图 源代码 //****************************************************************// //AM系列温湿度传感器,读IIC使用示例  //单片机 :AT89S52 或 STC89C52RC  //功能  :串口发送温湿度数据  波特率 9600  //晶振  :12M (用户系统时钟如不是12M 请更改相关宏定义及注释的延时时间) //波特率:9600 //编译环境:  Keil 4 //*********