摇一摇监听器
16lz
2021-01-25
import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class ShakeListener implements SensorEventListener { private static final int SPEED_SHRESHOLD = 3000; private static final int UPTATE_INTERVAL_TIME = 70; String TAG = "ShakeListener"; private long lastUpdateTime; private float lastX; private float lastY; private float lastZ; private Context mContext; private OnShakeListener onShakeListener; private Sensor sensor; private SensorManager sensorManager; public interface OnShakeListener { void onShake(); } public ShakeListener(Context c) { this.mContext = c; start(); } public void start() { this.sensorManager = (SensorManager) this.mContext.getSystemService("sensor"); if (this.sensorManager != null) { this.sensor = this.sensorManager.getDefaultSensor(1); } if (this.sensor != null) { this.sensorManager.registerListener(this, this.sensor, 1); } } public void stop() { this.sensorManager.unregisterListener(this); } public void setOnShakeListener(OnShakeListener listener) { this.onShakeListener = listener; } public void onSensorChanged(SensorEvent event) { long currentUpdateTime = System.currentTimeMillis(); long timeInterval = currentUpdateTime - this.lastUpdateTime; if (timeInterval >= 70) { this.lastUpdateTime = currentUpdateTime; float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; float deltaX = x - this.lastX; float deltaY = y - this.lastY; float deltaZ = z - this.lastZ; this.lastX = x; this.lastY = y; this.lastZ = z; if ((Math.sqrt((double) (((deltaX * deltaX) + (deltaY * deltaY)) + (deltaZ * deltaZ))) / ((double) timeInterval)) * 10000.0d >= 3000.0d) { this.onShakeListener.onShake(); } } } public void onAccuracyChanged(Sensor sensor, int accuracy) { }}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer