代码及范例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
//创建活动,调用SensorEventListener public class Sensor extends Activity implements SensorEventListener { private SensorManager sensorManager;//传感器管理器 private Sensor accelerometer;//加速度传感器 private Sensor orientation; //回旋传感器 //初始化活动 @Override public void onCreate(Bundle senevent) { super.onCreate(senevent); requestWindowFeature(Window.FEATURE_NO_TITLE); //设定传感器管理器 sensorManager=(SensorManager)getSystemService( Context.SENSOR_SERVICE); //设定传感器 List list; list=sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); if (list.size()>0) accelerometer=list.get(0); list=sensorManager.getSensorList(Sensor.TYPE_ORIENTATION); if (list.size()>0) orientation=list.get(0); } //程序的开始 @Override protected void onResume() { super.onResume(); //传感器信息处理的设定 if (accelerometer!=null) { sensorManager.registerListener(this, accelerometer,SensorManager.SENSOR_DELAY_FASTEST); } if (orientation!=null) { sensorManager.registerListener(this, orientation,SensorManager.SENSOR_DELAY_FASTEST); } } //程序的停止 @Override protected void onStop() { //传感器处理的停止 sensorManager.unregisterListener(this); //程序的停止 super.onStop(); } //传感器信息的处理 public void onSensorChanged(SensorEvent event) { //数据的取得 for (int i=0;i<3;i++) { int w=(int)(10*event.values[i]); event.values[i]=(float)(w/10.0f); } //加速度的取得 if (event.sensor==accelerometer) { sensorView.setAcceleration(event.values); } //方向的取得 if (event.sensor==orientation) { sensorView.setOrientation(event.values); } sensorView.invalidate(); } //精度变更函数,一般不必修改 public void onAccuracyChanged(Sensor sensor,int accuracy) { } } |
说明:通过以上代码可以获得设备当前加速度的信息。之后可以作如下设定:
1 2 3 4 5 6 7 8 9 10 |
private float[] acceleration=new float[3];//X、Y、Z轴的加速度 private float[] orientation =new float[3];//倾斜相关的值 //加速度的设定 public void setAcceleration(float[] acceleration) { this.acceleration=acceleration; } //倾斜的设定 public void setOrientation(float[] orientation) { this.orientation=orientation; } |
所定义的六个浮点数即可用来描述当前的加速度等信息。