Android
Wykryj zdarzenie Shake w Androidzie
Szukaj…
Shake Detector na przykładzie Androida
public class ShakeDetector implements SensorEventListener {
private static final float SHAKE_THRESHOLD_GRAVITY = 2.7F;
private static final int SHAKE_SLOP_TIME_MS = 500;
private static final int SHAKE_COUNT_RESET_TIME_MS = 3000;
private OnShakeListener mListener;
private long mShakeTimestamp;
private int mShakeCount;
public void setOnShakeListener(OnShakeListener listener) {
this.mListener = listener;
}
public interface OnShakeListener {
public void onShake(int count);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// ignore
}
@Override
public void onSensorChanged(SensorEvent event) {
if (mListener != null) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
float gX = x / SensorManager.GRAVITY_EARTH;
float gY = y / SensorManager.GRAVITY_EARTH;
float gZ = z / SensorManager.GRAVITY_EARTH;
// gForce will be close to 1 when there is no movement.
float gForce = FloatMath.sqrt(gX * gX + gY * gY + gZ * gZ);
if (gForce > SHAKE_THRESHOLD_GRAVITY) {
final long now = System.currentTimeMillis();
// ignore shake events too close to each other (500ms)
if (mShakeTimestamp + SHAKE_SLOP_TIME_MS > now) {
return;
}
// reset the shake count after 3 seconds of no shakes
if (mShakeTimestamp + SHAKE_COUNT_RESET_TIME_MS < now) {
mShakeCount = 0;
}
mShakeTimestamp = now;
mShakeCount++;
mListener.onShake(mShakeCount);
}
}
}
}
Korzystanie z wykrywania wstrząsów sejsmicznych
Seismic to biblioteka do wykrywania wstrząsów na urządzeniach z Androidem firmy Square. Aby go użyć, po prostu zacznij słuchać emitowanych przez niego zdarzeń wstrząsania.
@Override
protected void onCreate(Bundle savedInstanceState) {
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sd = new ShakeDetector(() -> { /* react to detected shake */ });
}
@Override
protected void onResume() {
sd.start(sm);
}
@Override
protected void onPause() {
sd.stop();
}
Aby zdefiniować inny próg przyspieszenia, użyj parametru sd.setSensitivity(sensitivity)
o sensitivity
SENSITIVITY_LIGHT
, SENSITIVITY_MEDIUM
, SENSITIVITY_HARD
lub innej rozsądnej wartości całkowitej. Podane wartości domyślne wynoszą od 11 do 15 .
Instalacja
compile 'com.squareup:seismic:1.0.2'
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow