activity实现SensorEventListener接口
private SensorManager sensorManager;
private Sensor sensor;//
private Vibrator vibrator;//震动器
private long MARGENTIME = 70;
private long lasttime = System.currentTimeMillis();
private float lastx;
private float lasty;
private float lastz;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onSensorChanged(SensorEvent event) {long currenttime = System.currentTimeMillis();
long duration = currenttime - lasttime;
if (currenttime - lasttime < MARGENTIME) {
return;
}
lasttime = currenttime;
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
float deltax = x - lastx;
float deltay = y - lasty;
float deltaz = z - lastz;
lastx = x;
lasty = y;
lastz = z;
double speed = Math.sqrt(deltaz * deltax + deltay * deltay + deltaz
* deltaz)
/ duration * 10000;
if (speed > 3500) {
vibrator.vibrate(new long[] { 500, 300, 500, 300 }, -1);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}