您的位置:首页 > 移动开发 > Android开发

Android学习之Sensor

2013-01-14 01:27 197 查看
转自http://javatest.blog.163.com/blog/static/20865106420126216118757/

只需要五步,你就能搞定Sensor。让你的程序变的更酷。

[java] view
plaincopy

//第一步:获得SensorManager对象,返回的就是一个硬件设备的控制器

SensorManager sensorManager = (SensorManager)getSystemService(SERVICE_NAME);

//第二步:获得特定的传感器

Sensor accelerSensor = sensorManager.getDefaultSensor(Sensor. TYPE_ACCELEROMETER);

//第三步:创建SensorEventListener监听传感器的值改变并且做出相应的动作

SensorEventListener mySensorListener = new SensorEventListener() {

//传感器的值改变调用此方法

@Override

public void onSensorChanged(SensorEvent event) {

float x = event.values[0];

float y = event.values[1];

float z = event.values[2];

//获得值之后,你就可以进行相应的处理啦

System.out.println("~~~X is :"+x);

System.out.println("---Y is :"+y);

System.out.println("+++Z is :"+z);

}

//传感器的精确度改变调用此方法

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

}

//第四步:注册传感器事件监听事件

sensorManager.registerListener(mySensorListener, accelerSensor, SensorManager.SENSOR_DELAY_NORMAL);

//第五步:注销传感器事件的监听

sensorManager.unregisterListener(mySensorListener);

补充:

第二步中可以获得如下传感器,

传感器类型列表:
Sensor.TYPE_ACCELEROMETER:
加速计传感器
Sensor.TYPE_GYROSCOPE:
回转仪传感器
Sensor.TYPE_LIGHT:
光传感器,动态控制屏幕亮度
Sensor.TYPE_MAGNETIC_FIELD:
磁场传感器
Sensor.TYPE_ORIENTATION:
方向传感器
Sensor.TYPE_PRESSURE:
压力传感器
Sensor.TYPE_PROXIMIY:
邻近距离传感器
Sensor.TYPE_TEMPERATURE:
温度传感器

有些手机不支持部分感应装置你可以判断sensor是否为null,为null时你可以提示用户。

你也可以使用下面的语句获得设备可用的的传感器列表:
List<Sensor> allSensors = sensorManger.getSensorList(Sensor.TYPE_ALL);

在第三步中,
三个参数分别为:SensorEventListener、Sensor、传感器的更新速率

前两个参数都是之前声明的。

第三个参数,有四个选择。
传感器更新速率:
SensorManager.SENSOR_DELAY_FASTEST:
指定可能最快的传感器更新速率

SensorManager.SENSOR_DELAY_GAME:
指定适合在游戏中使用的更新速率

SensorManager.SENSOR_DELAY_NORMAL:
指定默认的更新速率

SensorManager.SENSOR_DELAY_UI:
指定适合于更新UI的更新速率

第四步一般是在onResume()中进行。

第五步一般在onPause()中进行。
这样Activity是和用户交互时才使用它们。

我写了一个方向传感器的简单例子,有兴趣的同学可以下载:
http://download.csdn.net/source/3326822
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: