原理:http://blog.csdn.net/xiaolei05/article/details/18670161

1.Sensor Type
      重力感应/加速度传感器
(G-Sensor)
      光感应   (Light-Sensor) 
      温度感应
      方向感应
      磁场、
      临近性

2.如何实现Sensor编程
  
a. 获取系统服务(SENSOR_SERVICE)返回一个SensorManager
对象
      sensormanager =
(SensorManager)getSystemSeriver(SENSOR_SERVICE);
  b. 通过SensorManager对象获取相应的Sensor类型的对象
      sensorObject =
sensormanager.getDefaultSensor(sensor Type);
  c. 声明一个SensorEventListener 对象用于侦听Sensor 事件,并重载onSensorChanged方法
      SensorEventListener sensorListener = new
SensorEventListener(){         };
  d. 注册相应的SensorService
      sensormanager.registerListener(sensorListener, sensorObject, Sensor
TYPE);
  e. 销毁相应的SensorService
      sensormanager.unregisterListener(sensorListener,
sensorObject);
    f. SensorListener 接口是传感器应用程序的中心。它包括两个必需方法:
      onSensorChanged(int
sensor,float values[]) 方法在传感器值更改时调用。

  该方法只对受此应用程序监视的传感器调用(更多内容见下文)。该方法的参数包括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。

  有些传感器只提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。
g.当传感器的准确性更改时,将调用

    onAccuracyChanged(int sensor,int accuracy)

  参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。

3.关于G-Sensor
  
Android 加速度传感器的类型是
Sensor.TYPE_ACCELEROMETER

  通过 android.hardware.SensorEvent 返回加速度传感器值。

  加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是
    values[0]: x-axis 方向加速度
    values[1]: y-axis 方向加速度
    values[2]: z-axis 方向加速度
  其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点

    x 方向就是手机的水平方向,右为正
    y 方向就是手机的水平垂直方向,前为正
    z 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负。

    需要注意的是,由于地球固有的重力加速度g (值为9.8 m/s^2),因此现实中实际加速度值应该是 z方向返回值 - 9.8
m/s^2.

  方向角的定义是手机y轴 水平面上的投影 与 正北方向的夹角。 (值得范围是 0 ~ 359 其中0=North, 90=East, 180=South, 270=West)

  倾斜角的定义是手机y轴 与水平面的夹角 (手机z轴向y轴方向移动为正 ,值得范围是 -180 ~ 180)

  旋转角的定义是手机x轴 与水平面的夹角 (手机x轴离开z轴方向为正, 值得范围是 -90 ~ 90)

  也就是说,当你把手机水平放置在桌面上(屏幕向上)且手机指向正北(Y轴方向),此时传感器获得的xyz三个值应该都为0。

例子:

// 获得系统服务

mSenMgr = (SensorManager)getSystemService(SENSOR_SERVICE);

// 获得Sensor对象

mGSensor = mSenMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

// 监听Sensor事件

lsn = new SensorEventListener() {

@Override

public void
onSensorChanged(SensorEvent event) {……}

@Override

public void onAccuracyChanged(Sensor arg0, int arg1) {……}

};

// 注册SensorService

mSenMgr.registerListener(lsn,mGSensor, SensorManager.SENSOR_DELAY_GAME);

Sensor的更多相关文章

  1. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  2. (转)CMOS Sensor的调试经验分享

    CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...

  3. FPGA图像处理 两路sensor的色调不一致

    怎么调?可以让两路sensor的色调一致.

  4. Sensor(PROXIMITY)

    package com.example.sensor01; import android.hardware.Sensor; import android.hardware.SensorEvent; i ...

  5. Sensor(LIGHT)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  6. Sensor(GYROSCOPE)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  7. Sensor(ORIENTATION)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  8. Sensor(ACCELEROMETER)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  9. 泛在传感器网络(Ubiquitous Sensor Network; USN)

    http://wiki.mbalib.com/wiki/%E6%B3%9B%E5%9C%A8%E4%BC%A0%E6%84%9F%E5%99%A8%E7%BD%91%E7%BB%9C 什么是泛在传感器 ...

  10. 深入浅出 - Android系统移植与平台开发(十一) - Sensor HAL框架分析之一

    作者:唐老师,华清远见嵌入式学院讲师. 1. Sensor的概念 Sensor即传感器,在当前智能手机上大量存在:G-Sensor.LightsSensor. ProximitySensor.Temp ...

随机推荐

  1. c# 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单 ...

  2. Oracle_高级功能(4) 数据库存储结构

    数据库存储结构分为:物理存储结构和逻辑存储结构.物理结构和逻辑结构分开,对物理数据的存储不会影响对逻辑结构的访问.1.物理存储结构 数据库文件 os block2.逻辑存储结构 tablespace ...

  3. PAT 1068 万绿丛中一点红(20)(测试点分析+思路分析)

    1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...

  4. myeclipse的安装与配置和JUnit的简单使用

    安装配置 首先根据自己电脑系统选择合适的JDK版本 http://www.oracle.com/technetwork/java/javase/downloads/index.html 这是JDK下载 ...

  5. 使用limma、Glimma和edgeR,RNA-seq数据分析易如反掌

    使用limma.Glimma和edgeR,RNA-seq数据分析易如反掌 Charity Law1, Monther Alhamdoosh2, Shian Su3, Xueyi Dong3, Luyi ...

  6. Vim中如何使用正则进行搜索

    #set magic这句的作用在于将vim的正则打开. 这样就可以搜索了. 至于正则的相关的内容.在此抄一份.以免于下次自己还要去百度. 符号 匹配 . (dot) 任意单一字符 \d 任意一位数字 ...

  7. centos安装tomcat7.0.70

    抄自:https://www.cnblogs.com/www1707/p/6592504.html apache-tomcat-7.0.70jdk-7u67-linux-x64 下载tomcathtt ...

  8. Java中TreeMap的基本操作

    TreeSet有四种种构造函数可以初始化 在代码中主要列出了常用的三种: 构造方法摘要 TreeSet()           构造一个新的空 set,该 set 根据其元素的自然顺序进行排序. Tr ...

  9. 2016-2017-2 20155312 实验四Android程序设计实验报告

    遇到的问题及解决过程 「问题1」Android Studio-R文件出错 解决:参考Android Studio-R文件错误的解决办法步骤如下: 第一步:检查xml文件,R文件错误通常是由于我们的xm ...

  10. GCC选项之-M

    大多数的C/C++编译器都支持一个“-M”的选项,即自动找寻源文件中包含的头文件.举个例子,比如mian.c包含有如下头文件. #include <stdio.h> #include &q ...