安卓提供了对传感器的支持,如果手机设备的硬件支持了这些传感器,那么利用传感器可以开发出一些非常有趣的应用,这种模式在3D游戏中已经非常常见。
大体上,一般的智能机能支持几种常见的传感器:
》Orientation ---方向传感器
》Tempreture ---温度传感器
》Light ---光传感器
》Pressure ---压力传感器
》Magnetic Field ---磁场传感器
》Accelerometer ---加速度传感器
传感器的几个重要的API:
SensorManager
Sensor
SensorEvent (绑定SensorEventListener)
所以开发传感器应用的步骤如下:
1 调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager对象,SensorManager对象代表系统的传感器管理服务。
2 调用SensorManager的getDefaultSensor(int type)方法获取指定类型的传感器;
3 一般在Activity的OnResume()方法中调用SensorManager的registerListener()为指定传感器注册监听器
4 在Activity的OnStop()方法中注销对传感器的注册。
注册指定传感器的方法如下:
registerListener(SensorEventListener listener,Sensor sensor,int rate)
三个参数意义如下:
listener:为传感器注册的SensorEventListener;
sensor:指定的传感器;
rate:这个参数表示获取传感器的频率,它支持如下几个频率值:
SensorManager.SENSOR_DELAY_FASTEST: 最快的模式,带式消耗的电能比较大,占用性能大;
SensorManager.SENSOR_DELAY_GAME: 适合游戏的模式;
SensorManager.SENSOR_DELAY_NORMAL: 正常的模式,对实时性要求不是特别高的应用更适合这个频率;
SensorManager.SENSOR_DELAY_UI: 适合普通用户界面的频率。
下面以一个简单地示例说明几个传感器的具体用法:
由于在真机上运行要安装传感器模拟器,所以此例是运行在真机上的:
package org.crazyit.sensor;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.EditText;
public class SensorSimulatorTest extends Activity
implements SensorEventListener
{
private SensorM