// 获取加速度,实现摇晃效果
private final SensorEventListener shake = new SensorEventListener() {
public void onSensorChanged(SensorEvent se) {
long currentTime = System.currentTimeMillis();
long diffTime = currentTime - mLastUpdateTime;
if (diffTime < UPDATE_INTERVAL) {
return;
}
mLastUpdateTime = currentTime;
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
float deltaX = x - mLastX;
float deltaY = y - mLastY;
float deltaZ = z - mLastZ;
mLastX = x;
mLastY = y;
mLastZ = z;
float delta = FloatMath.sqrt(deltaX * deltaX + deltaY * deltaY
+ deltaZ * deltaZ)
/ diffTime * 10000;
if (delta > shakeThreshold) {
d = 3;
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
需在Oncreat注册
// 注册sensorManager
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
boolean accelSupported = sensorManager.registerListener(shake,
sensor, SensorManager.SENSOR_DELAY_GAME);
if (!accelSupported) {
sensorManager.unregisterListener(shake);
}