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层到底是如何工作的,一般需要下面四个步骤来实现一个sensor应用。
Step1:通过getSystemService获取sensor服务,其实就是初始化一个SensorManager实例;
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Step2:通过SensorManager的getDefaultSensor方法获取指定类型的传感器的sensor对象;
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); // 重力感应
Step3:实现SensorEventListener接口的onSensorChanged和onAccuracyChanged方法;
SensorEventListenerlsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
//当传感器的值发生变化时,会执行这里
}
public void onAccuracyChanged(Sensor s, int accuracy) {
//当传感器的精度变化时,会执行这里
}
};
Step4:通过SensorManager的registerListener方法注册监听,获取传感器变化值。
mSensorManager.registerListener(lsn,sensor, SensorManager.SENSOR_DELAY_GAME);
注:当传感器的值发生变化时,会调用onSensorChanged方法;当传感器的精度变化时会调用onAccuracyChanged方法。
完整示例代码:
public class main extends Activity {
private float x, y, z;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SensorManager mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
SensorEventListener lsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
System.out.println(e.value[0]);
System.out.println(e.value[1]);
System.out.println(e.value[2]);
}
public void onAccuracyChanged(Sensor s, int accuracy) {
}
};
mSensorManager.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}
android驱动程序之 - sensor的更多相关文章
- Android Sensor详解(1)简介与架构【转】
本文转载自:https://blog.csdn.net/u013983194/article/details/53244686 最近在学习有关如何porting sensor的东西,仅借此机会写博客来 ...
- 【转】android camera(三):camera V4L2 FIMC
关键词:android camera CMM 模组 camera参数 CAMIF V4L2 平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos ...
- 【转】android camera(一):camera模组CMM介绍
关键词:android camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin ...
- android camera(一):camera模组CMM介绍【转】
转自:https://blog.csdn.net/kevinx_xu/article/details/8821818 androidcmm图像处理工作手机三星 关键词:android camera ...
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...
- 如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)
原文地址http://blog.sina.com.cn/s/blog_621c16b101013ygl.html OpenIntents项目和可用资源介绍 [1]. 项目介绍:OpenInten ...
- android camera(四):camera 驱动 GT2005
摄像头主要参数: 1.MCLK 24MHz: 2.PCLK 48~52MHz~: 3.电压 1.8V(1.5V).2.8V: 4.scl(IIC时钟)100KHz或者400KHz. 下载:常用摄像 ...
- Android -- getSystemService
Android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardServic ...
- android系统自带的Service原理与使用
1. 说明 android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如 MountService监听是否有SD卡安装及移除,Clipboar ...
随机推荐
- How to add “Maven Managed Dependencies” library in build path eclipse
If you have m2e installed and the project already is a maven project but the maven dependencies are ...
- Objective-C 调用C++,C
1. 建立一个C++类 2. 写一个Adaptor的Objective-C类 3. 在其他Objective-C的逻辑中调用Adaptor类. 1.C++类 // // CPlusPlusClass. ...
- MVC返回http状态码
//controller ); //asp.net return HttpStatusCode.OK
- 获取windows版本信息
procedure TForm1.Button1Click(Sender: TObject); Var OSVI:OSVERSIONINFO; begin OSVI.dwOSversi ...
- Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
大家好,我们这一节讲一下,Android获取Ip的一些方法,在我们开发中,有判断手机是否联网,或者想获得当前手机的Ip地址,当然WIFI连接的和 我们3G卡的Ip地址当然是不一样的. 首先我尝试了如下 ...
- (转) 如何在JavaScript与ActiveX之间传递数据1
本文研究如何在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDispatch接口.使用类似的方法,可以推广到其他所有脚本型语言,如LUA,AutoCad等.本文将研 ...
- careercup-C和C++ 13.2
13.2 浅析哈希表和STL map.对比哈希表和STL map.哈希表是怎么实现的?如果输入数据规模不大, 我们可以使用什么数据结构来代替哈希表. 解答 对比哈希表和STL map 在哈希表中,实值 ...
- PAT 1006
1006. Sign In and Sign Out (25) At the beginning of every day, the first person who signs in the com ...
- com.code.servlet
package com.code.servlet; import java.io.IOException; import java.util.LinkedHashMap; import java.ut ...
- iOS web与js的简单交互
我们在封装网页的时候经常会遇到需要往网页里面的控件添加数据,但是怎么添加又成了难点.本人最近在开发的时候就遇到这样的事,解决之后,来和大家分享一下. //以必应网站为例 [web loadReques ...