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];
}
}