概要:
SensorManager:用来获取手机中的适配器,如果没有相关硬件的话,会返回空对象,一般用 Context.getSystemService(SENSOR_SERVICE)来进行实例化。常用方法可到http://www.android-doc.com/reference/android/hardware/SensorManager.html进行查询
Sensor
:用来获取要用何种适配器,api:http://www.android-doc.com/reference/android/hardware/Sensor.html
SensorEventListener
:适配器的相关事件,要来进行监听。
该功能主要用到的类及方法,还包括其它的不一一细讲。
创建路线:
一:创建SensorManager,SensorEventListener 二:实例化方法,通过 manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 及实例化接口 三:取消绑定
如下所示,实例化一个SensorManager,并判断是否为空
public void registerEvent(){
manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (manager != null) {
sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
if (sensor != null) {
manager.registerListener(sensorListener, sensor,
SensorManager.SENSOR_DELAY_GAME);
}
}
二,注册监听事件
sensorListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
long currentUpdateTime = System.currentTimeMillis();
long timeInterval = currentUpdateTime - lastUpdateTime;
if (timeInterval < UPTATE_INTERVAL_TIME)
return;
lastUpdateTime = currentUpdateTime;
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
float deltaX = x - lastX;
float deltaY = y - lastY;
float deltaZ = z - lastZ;
lastX = x;
lastY = y;
lastZ = z;
double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ
* deltaZ)
/ timeInterval * 10000;
if (speed >= SPEED_SHRESHOLD) {
initAnimation();
}
至于取消看是否需求需要,我们可以通过SensorManager
中的方法进行解绑:
sensorManager.unregisterListener(this);
大致的实现思路如上所示:
代码链接:
http://download.csdn.net/detail/ooiuy450/9398542