动作传感器的组成及使用方法

 1 //动作传感器:加速度传感器,重力传感器:
 2 public class MainActivity extends Activity implements SensorEventListener {
 3     private TextView tvAcceleromter;
 4     private SensorManager sManager;
 5     private float[] gravity = new float[3];
 6
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.fragment_main);
11         tvAcceleromter = (TextView) findViewById(R.id.tv);
12         sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
13
14     }
15
16     // 传感器数据变化
17     @Override
18     public void onSensorChanged(SensorEvent event) {
19         // TODO Auto-generated method stub
20         switch (event.sensor.getType()) {
21         // 加速度 9.81m/s^2
22         case Sensor.TYPE_ACCELEROMETER:
23             final float alpha = (float) 0.8;// 系数
24             gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
25             gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
26             gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
27             // String accelerometer = "加速度:" + "X轴:" + event.values[0] + "Y轴:"
28             // + event.values[1] + "Z轴:" + (event.values[2] - 9.81);
29             // 去掉杂音
30             String accelerometer = "加速度:" + "X轴:"
31                     + (event.values[0] - gravity[0]) + "Y轴:"
32                     + (event.values[1] - gravity[1]) + "Z轴:"
33                     + (event.values[2] - gravity[2]);
34             Log.i("--->>", String.valueOf(event.values[2] - gravity[2]));
35
36             // event.values[0]; X轴
37             // event.values[1]; Y轴
38             // event.values[2]; Z轴
39
40             tvAcceleromter.setText(accelerometer);
41             break;
42         // 重力
43         case Sensor.TYPE_GRAVITY:
44             gravity[0] = event.values[0];
45             gravity[1] = event.values[1];
46             gravity[2] = event.values[2];
47             break;
48
49         default:
50             break;
51         }
52     }
53
54     // 传感器精度变化
55     @Override
56     public void onAccuracyChanged(Sensor sensor, int accuracy) {
57         // TODO Auto-generated method stub
58
59     }
60
61     @Override
62     protected void onResume() {
63         // TODO Auto-generated method stub
64         super.onResume();
65         // 注册传感器
66         // 加速度
67         sManager.registerListener(this,
68                 sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
69                 SensorManager.SENSOR_DELAY_NORMAL);
70         // 重力
71         sManager.registerListener(this,
72                 sManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
73                 SensorManager.SENSOR_DELAY_FASTEST);
74
75     }
76
77     @Override
78     protected void onPause() {
79         // TODO Auto-generated method stub
80         super.onPause();
81         // 不在截获传感器数据
82         sManager.unregisterListener(this);
83
84     }
85
86 }
时间: 2024-10-12 16:05:02

动作传感器的组成及使用方法的相关文章

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

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

2. 传感器:动作传感器

动作传感器概述 Android平台支持一些用于监视设备动作的传感器(这样的传感器共有5个).其中两个(加速传感器和陀螺仪传感器)是纯的硬件传感器.另外三个(重力传感器.线性加速传感器和旋转向量传感器)可能是硬件传感器,也可能是软件传感器.例如,在一些Android设备中,这些基于软件的传感器会从加速和磁力传感器中获取数据,但在另一些Android设备中也可能从陀螺仪传感器中获取数据.也就是说,同一种基于软件的传感器在不同的Android设备中回传的数据可能来自不同的硬件传感器.所以基于软件的同一

android动作传感器

Android平台支持一些用于监视设备动作的传感器(这样的传感器共有5个).其中两个(加速传感器和陀螺仪传感器)是纯的硬件传感器.另外三个(重力传感器.线性加速传感器和旋转向量传感器)可能是硬件传感器,也可能是软件传感器.例如,在一些Android设备中,这些基于软件的传感器会从加速和磁力传感器中获取数据,但在另一些Android设备中也可能从陀螺仪传感器中获取数据.也就是说,同一种基于软件的传感器在不同的Android设备中回传的数据可能来自不同的硬件传感器.所以基于软件的同一种传感器在不同的

AndroidOrientation Sensor(方向传感器),新的替代方法详解(安卓官方提供)

本文将带大家去解读下安卓官方关于方向传感器数据,提供的新方法.熟悉手机传感器开发的朋友对这段代码一定不会陌生吧. sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL); sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_GRAVITY), 在高版本的安卓中,Sensor.T

环境传感器的组成及使用方法

Android 传感器开发 完全解析

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53161452 大家好,由于最近会有对智能硬件相关的开发需求,所以最近这些天分享的博文也就大致挂钩智能硬件了,像上一篇的蓝牙分享,相信很多读者已经看过了,那么今天我为大家带来Android传感器方面知识的介绍与使用方法,对于传感器的使用,不同版本的Android手机也许存在较大的硬件差异,但是万变不离其宗,本篇将通过几个最常见的传感器,渗透式的教会大家如何使用这些传感器,带领大家完

翻译:使用红外传感器与Arduino进行简单动作与手势检测

译注:昨天看 Adruino 的 Twitter 推了这篇项目,第一眼就觉得非常有趣,翻译给大家看看.文中的红外传感器比较高级,和淘宝上5块钱的那种只能输出0和1的不一样, TPA81 是可以输出温度的,还是8个连续点. MLX90614 可以输出一点的温度,还卖将近三十,可以想象 TPA81 的价格--而且淘宝上并没有卖 TPA81 的,可见国内还没有仿的.文章也给出了另一个解决方案,使用8个 HC-SR505 来替代,这就便宜了很多.我想了一下,如果要只是实现像文章那样的增减手势,3个 HC

知识点4-1:哪些应该放在控制器动作方法中?

控制器是ASP.NET MVC应用程序的核心组件之一.它是一个含有一个或多个public方法(动作)的类,这些方法对应于特定的URL.这些动作充当着应用程序的“胶水”,将模型数据与应用程序的用户界面(视图)集合在一起. 控制器应充当一种协调程序,它不应该真正包含任何业务逻辑,而是充当一种转换层的形式,将视图中的用户输入转换成业务逻辑对象,反之亦然. 1.手动映射视图模型 在留言本这个例子中,GuestbookEntry类既作为域模型,也作为视图模型.它既表现了数据库中存储的数据,也表现了用户界面

1、传感器概述

传感器种类 传感器是第二代智能手机的重要标志之一.可以毫不客气地说,现在市面上的Android手机和平板电脑(TV除外)都内置了传感器.否则很多游戏和应用就无法使用了.Android SDK支持的传感器并不是每一部Android设备都支持所有的传感器.大多数Android设备只支持一部分传感器.例如,方向传感器(电子罗盘).重力传感器(屏幕翻转.赛车游戏等). 动作(Motion)传感器 这类传感器在三个轴(X.Y.Z)上测量加速度和旋转角度.包括如下几个传感器. 加速(acceleromete