重力感应也是智能机和非智能机的区别之一,Android这个功能自然可以在设备中找到。
在Android需要使用重力感应功能SensorEventListener,有两种方法,
onSensorChanged和onAccuracyChanged,一般都是在onSensorChanged做一些希望在方法中达到的效果(羞耻
羞愧,刚接触到这种重力感应,所以对这两种方法了解不多)。重力感应是一种感应方式,所以我们必须使用感应检测包Sensor。
首先,我们必须得到一个SensorManager,SensorManager manager =
(SensorManager)
this.getSystemService(Context.SENSOR_SERVICE)。然后,通过这个manager来获得一个Sensor
的列表,Listsensors =
manager.getSensorList(Sensor.TYPE_ACCELEROMETER)。
Sensor.TYPE_ACCELEROMETER指加速度感应检测,当然还有其他一些感应检测,这里就不用说了。
当我做重力感应时,我使用它manager.registerListener(listener, sensor, rate),这边的sensor就是sensors中的一个Sensor,rate指延迟时间。
如果要取消这种重力感应,manager.unregisterListener(listener)取消注册。
public class SensorEventDemoActivity extends Activity implements SensorEventListener{
private Listsensors;
private Sensor sensor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onResume() {
super.onResume();
SensorManager manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
sensors = manager.getSensorList(Sensor.TYPE_ACCELEROMETER);
sensor = sensors.get(0);
manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onSensorChanged(SensorEvent event) {
Log.d("Sensor Demo", "do sensor");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
其实代码很简单,主要看如何在实际项目中使用。