Android中为了实现一些特定的效应,必须使用重力感应,尤其是在游戏当中。
在Android中管理重力感应的是SensorManager。
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRegisterSensor = false;//控制开关
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//获取到Sensor服务
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
//卸载
if(mRegisterSensor){
mSensorManager.unregisterListener(this);
mRegisterSensor = false;
}
super.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//抓取所有的Sensor,进行注册
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
if(sensors.size()>0){
Sensor sensor = sensors.get(0);
mRegisterSensor = mSensorManager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_FASTEST);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
/**
* x,y,z表示手机在x,y,z轴的倾斜度
* google sdk中将手机进行三维座标划分
* 比如y=-180 表示手机翻转放在水平面上
*/
if(event.sensor.getType() == Sensor.TYPE_ORIENTATION){
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
}
}