Sensor

原理: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[]) 方法在传感器值更改时调用。

该方法只对受此应用程序监视的传感器调用(更多内容见下文)。该方法的参数包括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。有些传感器只提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。
当传感器的准确性更改时,将调用
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);

时间: 2024-10-06 06:15:07

Sensor的相关文章

高通sensor库和Linker的死锁问题分析报告

[问题描述] 调试NativeHeap泄露时,我们会用到Android Native Heap调试框架. 在push libc_malloc_debug_leak.so后重启zygote(adb shell stop + adb shell start),会发现系统一直起不来. 用debuggerd打印system_server的调用栈,可以发现system server的大部分线程都在malloc函数里卡死: pid: 4918, tid: 4929, name: Binder_1 >>&g

利用传感器(sensor)实现微信摇一摇动画

所需要的权限: <uses-permission android:name="android.permission.VIBRATE"></uses-permission> xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and

OSSIM Server和Sensor间通讯问题

OSSIM Server和Sensor间通讯问题 Server分析用数据,全部来源于Sensor.Server和Sensor之间通讯非常重要,当Sensor和Server之间无法联系时会造成以下子系统无法显示数据: Dashboards 仪表盘 Analysis→SIEM Vulnerabilities漏洞扫描无法正常工作 Profiles→Ntop Detetion→OSSEC Server失效 Deployment→Alienvault→Center无法联系 Asset可启动扫描单扫描到的资

海思Hi3518EV200(5)图像sensor驱动开发

1. sensor开发框图 2. 设备驱动加载及硬件系统配置 cd mpp/ko # default online ./load3518e -a -sensor sc2135 -osmem 32 -total 64 # vi_vpss offline ./load3518e -a -sensor sc2135 -osmem 32 -total 64 -offline load3518e脚本主要是用来配置硬件系统的参数(引脚复用.sensor时钟.VI时钟)加载驱动(.ko),包括访问sensor

android——Seneor(获得数据值流程以及同时监听多个sensor)

近日接触到安卓传感器方面的编程,安卓提供好了Sensor.SensorManager和SenseorEventManager来获得传感器数据以及采取一些相应措施. 第一步:获得传感器数值 1.先通过服务获得SensorManager: (getSystemService)this.getSystemService(Context.SENSOR_SERVICE).  注意this是主Activity的this,如果是在别处调用,需要将主Activity传过去. 2.(可选)通过SensorMana

STM32 F4 ADC DMA Temperature Sensor

STM32 F4 ADC DMA Temperature Sensor Goal: detecting temperature variations using a temperature sensor, ADC with DMA and TIM3 as a trigger (ADC sampling frequency = TIM3 trigger frequency). Note: Using TIM3 as a trigger is suited for monitoring temper

android驱动程序之 - sensor

上图是android系统架构图,从中可以得知,sensor必贯穿架构的各个层次.按照架构层次,下面从五个方面来分析sensor架构: 1. sensor架构之App层: 2. sensor架构之Framework层: 3. sensor架构之Libraries层: 4. sensor架构之HAL层: 5. sensor架构之Driver. 1. sensor架构之App层 下面以g-sensor为例,写一个简单的apk,看一下sensor在App层到底是如何工作的,一般需要下面四个步骤来实现一个

Dell R710 Memory sensor

服务器前面板警告信息: system software event:Memory sensor,transition to critical from less severe 解决办法,重新启动服务器: Dell R710 Memory sensor,布布扣,bubuko.com

Sensor与android Manager机制

1.1 Sensor应用程序框架 这部分对于上层写应用的朋友来比较熟悉,我们通过一个简单的应用来分析框架层和底层的实现. 通常编写一个传感器的应用程序有以下步骤: l 通过调用 Context.getSystemService(SENSOR_SERVICE)获得传感器服务,实现返回的是封装了SensorService的SensorManager对象 l 调用SensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION)来获得指定类型的传感器对象,方

Think in ISP(image sensor pipe )之How to implement an effecitive AE

How to implement a effecitive AE. AE(自动曝光) 1)try Minual exposure //time,line 2)try Max exposure //average target help to control it. 3)change gain get Range what is Minimal gain when set Max gain: what is reasonable gain // Upper bound://SNR influenc