前言: 利用加速度传感器,实现微信摇一摇的功能。
直接看AcceleratedSensorActivity类中的代码,具体注释已经在代码中给出:
public class AcceleratedSensorActivity extends AppCompatActivity implements SensorEventListener { //定义传感器管理器 private SensorManager sensorManager; //定义振动器 private Vibrator vibrator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_accelerated_sensor); //获取传感器管理器对象 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //获取振动器 vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); } @Override protected void onResume() { super.onResume(); //为加速度传感器注册监听器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); } @Override public void onSensorChanged(SensorEvent event) { //传感器的值发生变化时,触发 //获取传感器类型 int sensorType = event.sensor.getType(); if (sensorType == Sensor.TYPE_ACCELEROMETER) { //获取传感器的值 float[] values = event.values; //values[1] 指的是x轴方向 //values[2] 指的是y轴方向 //values[3] 指的是z轴方向 if (values[0] > 15 || values[1] > 15 || values[2] > 15) { Toast.makeText(this, "摇一摇!", Toast.LENGTH_SHORT).show(); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("发生摇一摇了").show(); //设置振动器的频率 vibrator.vibrate(500); //取消注册的监听器 sensorManager.unregisterListener(this); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {//传感器的精度发生变化时,触发 } }
最后一定要在清单文件中加入控制设备振动的权限:
<uses-permission android:name="android.permission.VIBRATE" />
具体效果就不演示了,以上就是加速度传感器的简单使用!