Android常用传感器

标签: android 传感器 | 发表时间:2013-07-19 01:43 | 作者:u010142437
出处:http://blog.csdn.net

在上文中介绍了加速度传感器,并以真机和模拟器两种方式进行了测试。在本文中将介绍其余几种传感器,它们的处理方式完全一样。这里就只用真机进行测试了。

1、方向传感器:返回三个角度

第一个角度:表示手机顶部朝向与正北方的夹角。范围0~360

第二个角度:表示手机顶部或尾部翘起的角度。范围-180~180

第三个角度:表示手机左侧或右侧翘起的角度。范围-90~90

2、磁场传感器:返回三个数据,分别代表周围磁场分解到X、Y、Z三个方向上的分量。

3、温度传感器:返回一个数据,表示手机设备周围温度。

4、光传感器:返回一个数据,表示手机设备周围的光的强度。

5、压力传感器:返回一个数据,表示手机设备周围的压力大小。

下面用一个简单示例来演示它们的使用,代码如下:

Activity:

package com.home.sensor;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.EditText;
import android.app.Activity;

public class SensorTestActivity extends Activity implements SensorEventListener {
	// 定义真机的传感器管理器
	private SensorManager mSensorManager;
	private EditText orientation;
	private EditText magnetic;
	private EditText temerature;
	private EditText light;
	private EditText pressure;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取界面上的EditText组件
		orientation = (EditText) findViewById(R.id.main_et_orientation);
		magnetic = (EditText) findViewById(R.id.main_et_magnetic);
		temerature = (EditText) findViewById(R.id.main_et_temerature);
		light = (EditText) findViewById(R.id.main_et_light);
		pressure = (EditText) findViewById(R.id.main_et_pressure);
		// 获取真机的传感器管理服务
		mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
	}

	@Override
	protected void onResume() {
		super.onResume();
		// 为系统的方向传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
				SensorManager.SENSOR_DELAY_GAME);
		// 为系统的磁场传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
				SensorManager.SENSOR_DELAY_GAME);
		// 为系统的温度传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
				SensorManager.SENSOR_DELAY_GAME);
		// 为系统的光传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
				SensorManager.SENSOR_DELAY_GAME);
		// 为系统的压力传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
				SensorManager.SENSOR_DELAY_GAME);
	}

	@Override
	protected void onPause() {
		super.onPause();
		// 程序暂停时取消注册传感器监听器
		mSensorManager.unregisterListener(this);
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		float[] values = event.values;
		StringBuffer sb = null;
		switch (event.sensor.getType()) {
		// 方向传感器
		case Sensor.TYPE_ORIENTATION:
			sb = new StringBuffer();
			sb.append("绕Z轴转过的角度:" + values[0]);
			sb.append("\n绕X轴转过的角度:" + values[1]);
			sb.append("\n绕Y轴转过的角度:" + values[2]);
			orientation.setText(sb.toString());
			break;
		// 磁场传感器
		case Sensor.TYPE_MAGNETIC_FIELD:
			sb = new StringBuffer();
			sb.append("X方向上的磁场分量:" + values[0]);
			sb.append("\nY方向上的磁场分量:" + values[1]);
			sb.append("\nZ方向上的磁场分量:" + values[2]);
			magnetic.setText(sb.toString());
			break;
		// 温度传感器
		case Sensor.TYPE_TEMPERATURE:
			sb = new StringBuffer();
			sb.append("当前温度为:" + values[0]);
			temerature.setText(sb.toString());
			break;
		// 光传感器
		case Sensor.TYPE_LIGHT:
			sb = new StringBuffer();
			sb.append("当前光的强度:" + values[0]);
			light.setText(sb.toString());
			break;
		// 压力传感器
		case Sensor.TYPE_PRESSURE:
			sb = new StringBuffer();
			sb.append("当前压力为:" + values[0]);
			pressure.setText(sb.toString());
			break;
		}
	}
}

布局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/main_et_orientation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false" />

    <EditText
        android:id="@+id/main_et_magnetic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false" />

    <EditText
        android:id="@+id/main_et_temerature"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false" />

    <EditText
        android:id="@+id/main_et_light"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false" />

    <EditText
        android:id="@+id/main_et_pressure"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false" />

</LinearLayout>




 

作者:u010142437 发表于2013-7-19 1:43:30 原文链接
阅读:52 评论:0 查看评论

相关 [android 传感器] 推荐:

Android常用传感器

- - CSDN博客推荐文章
在上文中介绍了加速度传感器,并以真机和模拟器两种方式进行了测试. 在本文中将介绍其余几种传感器,它们的处理方式完全一样. 1、方向传感器:返回三个角度. 第一个角度:表示手机顶部朝向与正北方的夹角. 第二个角度:表示手机顶部或尾部翘起的角度. 第三个角度:表示手机左侧或右侧翘起的角度. 2、磁场传感器:返回三个数据,分别代表周围磁场分解到X、Y、Z三个方向上的分量.

Android中的11种传感器

- - CSDN博客移动开发推荐文章
在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. #define SENSOR_TYPE_ACCELEROMETER       1 //加速度. #define SENSOR_TYPE_MAGNETIC_FIELD      2 //磁力. #define SENSOR_TYPE_ORIENTATION         3 //方向.

Android传感器-开发指南

- - CSDN博客综合推荐文章
大部分Android平台的设备都带有多个传感器,使你能监视其方位和运动状态的变化. 很多设备还有其它类型的传感器,让你能感知周围的环境条件,比如温度、压力、湿度和光线. 你可以利用Android的传感器框架访问这些传感器,并获取原始的传感器数据. 传感器框架提供了丰富的类和接口,能帮助你完成很多与传感器有关的工作.

Android操作系统11种传感器介绍

- - CSDN博客移动开发推荐文章
1 //加速度 #define SENSOR_TYPE_MAGNETIC_FIELD. 2 //磁力 #define SENSOR_TYPE_ORIENTATION. 3 //方向 #define SENSOR_TYPE_GYROSCOPE. 4 //陀螺仪 #define SENSOR_TYPE_LIGHT.

雨量、阳光、防雾传感器

- - CSDN博客推荐文章
雨量传感器、阳光传感器、防雾传感器是车辆主动控制系统的几个常见的传感器. 并且这几种传感器在市面上已经出现了融合为一体的产品. 目前,这几种传感器是应用在中高端车型上. 上世纪90年代开始,研究逐渐变多,然后技术逐渐成熟. 其可分为两种电容式和红外全反射式,其中红外全反射式是目前的主流. 全反射,就是利用光从光密介质进入光疏介质时,入射角达到一定角度,光会被全部反射,光纤传输就是利用这个原理.

ADAS 传感器易受雨水影响

- - 奇客Solidot–传递最新科技情报
US American Automobile Association(AAA)拥有超过 6000 万会员. 协会最近对当前的高级驾驶辅助系统(ADAS)进行测试,得出结论, 大雨会造成很高的错误率. 在封闭路线上模拟中到强降雨测试中,各种车辆的紧急制动系统测试在 25 英里/小时(40 公里/小时)时发生碰撞的概率为 17%,在 35 英里/小时(56 公里/小时)时发生率为 33%.

手机上的那些不为人知的传感器

- - 雷锋网
现在的手机越来越多功能,尤其是移动互联网的发展,使手机的进步更是迅速. 人们对手机的要求已经不局限于以往的电话和短信了,我们对手机在功能上的要求也越来越多. 现在的手机为了实现不同的功能,要装置很多传感器,而这些传感器各自又是怎么工作的呢. 本文就对手机上各种的传感器进行介绍以及进行相关功能的演示.

红外传感器让物联网设备更加智能

- - 玩意儿
红外传感器让物联网设备更加智能:. 据麦姆斯咨询报道,在过去的十年里,智能技术和物联网(IoT)经历了举世瞩目的进步,并对工业和人们的日常生活是非 长官了巨大影响,这很大程度上得益于越来越精密的传感器不断发展. 如今,电子传感器和探测器在汽车、制造设备、消费产品和家庭等领域实现了前所未有的自动化功能.

OmniVision发布体积最小的商用图像传感器OV6948

- - cnBeta.COM 全文
OmniVision发布了最小的商用图像传感器OV6948, 该传感器尺寸为0.575毫米x 0.575毫米,具有1/36英寸光学格式和图像阵列,可以以高达30fps速度拍摄200x200分辨率视频,适用于医疗,物联网,工业和法医应用. 这种微型封装图像传感器与OVM6948 CameraCubeChip(晶圆级摄像头模块,尺寸仅为0.65 x 0.65毫米)集成在一起,旨在为医学中最小的一次性内窥镜提供理想解决方案.

前诺基亚员工打造Thingsee One 旨在变为“传感器万金油”

- - cnBeta全文版
Thingsee看上去像是一部精美的老式寻呼机,其中配置了压力和光线传感器,以及加速度计,陀螺仪,和磁强计,每个人都可以利用它DIY自己所需的应用程序,给自己打造一个属于自己的物联网. 在科技圈里一直流传着这么一句话,“硬件是块难啃的硬骨头”. 毕竟,一个程序员只要有台计算机,就能自己搞定一款App,但要做一款全新的硬件,则要历经设计修订,材料测试,以及制造规范等一系列锤炼,才能问世.