原理: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. 转:css知多少(1)——我来问你来答

    1. 引言 各位前端或者伪前端(比如作者本人)的同志们,css对你们来说不是很陌生.比如我,在几年之前上大学的时候,给外面做网站就用css,而且必须用css.这样算下来也得六年多了,有些功能可能轻车熟 ...

  2. (转)OOP(面向对象编程)的几大原则

    文章转载自:http://blog.csdn.net/anders_zhuo/article/details/8949566 设计模式遵循的一般原则: 1.开-闭原则(Open-Closed Prin ...

  3. C++命名空间学习笔记

    1 模块化和界面 任何实际程序都是有一些部分组成的.通过将程序进行模块化可以使我们的程序更加清晰,有助于多人合作和维护. 将一个程序进行模块化以后,当其中一个模块调用另一个模块时,它不需要知道其具体实 ...

  4. redis 数据类型为string命令整理以及示例

    #设置值 SET key value [EX seconds] [PX milliseconds] [NX|XX] SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所 ...

  5. 为什么CPU的主频止步于4GHz?

    你对CPU的认识大概还停留在奔腾4年代吧……奔腾4最终止步于3.8GHz,原计划推出的4GHz奔腾4处理器也被胎死腹中.英特尔意识到处理器研发道路上走入了“唯主频论”的误区,2004年10月,英特尔总 ...

  6. Tomcat+Redis+Nginx实现session共享(Windows版)

    redis安装:xx nginx安装:xx 步骤: 1.下载tomcat-redis-session-manager相应的jar包,主要有三个: wget https://github.com/dow ...

  7. 【NIFI】 Apache NiFI 之 ExecuteScript处理(一)

    本例介绍NiFI ExecuteScript处理器的使用,使用的脚本引擎ECMScript FlowFile I / O简介 NiFi中的流文件由两个主要组件构成,即属性和内容.属性是关于内容/流文件 ...

  8. kbmmw 5.0 中的REST 服务

    目前关于REST 服务的话题越来越热,kbmmw 在5.0 里面开始支持rest.今天我就试一下kbmmw 的 rest 服务.闲话少说,开始. 老规矩,放上两个kbmMWServer1和 kbmMW ...

  9. 2018.11.01 loj#2319. 「NOIP2017」列队(线段树)

    传送门 唉突然回忆起去年去noipnoipnoip提高组试水然后省二滚粗的悲惨经历... 往事不堪回首. 所以说考场上真的有debuffdebuffdebuff啊!!!虽然当时我也不会权值线段树 这道 ...

  10. 重启服务器后,启动oracle监听报错 The listener supports no services The command completed successfuslly

    启动监听报错如下图所示: 远程连接报错如下图所示: 问题原因:数据库实例没注册到listener中 解决方法: (1)登录数据库:$sqlplus  / as sysdba (2)显示服务名:sql& ...