加速度传感器-Accelerometer(模拟摇一摇)
加速度传感器的用法
需要注意的是,由于地心引力的存在,你的手机无论在世界上任何角落都会有一个重力
加速度,这个加速度的值大约是 9.8m/s2
当手机平放的时候,这个加速度是作用在 Z 轴上
的,当手机竖立起来的时候,这个加速度是作用在 Y 轴上的,当手机横立起来的时候,这个
加速度是作用在 X 轴上的。
代码如下:功能为模拟摇一摇和获取XYZ轴的加速度大小,也可以和光照传感器一样获取加速度传感器的一些其他信息,具体见光照传感器
public class AccelerometerDemo extends Activity { private TextView tv_acc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.accelerometer_layout); tv_acc = (TextView) findViewById(R.id.tv_acc);//显示加速度传感器的结果 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //获取加速度传感器对象 Sensor accSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //为加速度传感器注册监听器 sensorManager.registerListener(listener, accSensor, SensorManager.SENSOR_DELAY_NORMAL); } private SensorEventListener listener=new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { //获取3个轴方向上的加速度值,加速度可能是负数,所以要取它们的绝对值 float xValue=Math.abs(event.values[0]); float yValue=Math.abs(event.values[1]); float zValue=Math.abs(event.values[2]); if(xValue>15 || yValue>15 || zValue>15){ //大于9.8的重力加速度就行,当然设大点更好了 Toast.makeText(getApplicationContext(), "用户摇一摇了", 0).show(); } tv_acc.setText("X轴方向上的加速度为:"+xValue +"\nY轴方向上的加速度为:"+yValue +"\nZ轴方向上的加速度为:"+zValue);//将得到的数据显示到TextView中 } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; private SensorManager sensorManager; @Override protected void onDestroy() { super.onDestroy(); if(sensorManager!=null){ sensorManager.unregisterListener(listener); } } }