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) {    }}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android ContentProvider(内容提供者)的
  2. Android面试题总结(一)
  3. android studio 怎么取消默认AppcompatAc
  4. android SDK 快速更新配置
  5. 再说Android中实现全屏的方法
  6. Android(安卓)OpenGL ES 开发教程 从入门
  7. (Android)用Socket的小例子
  8. Android Recovery的汉化 显示中文
  9. Android Service用法讲解与实例
  10. Android 10.0 Andorid.bp 动态编译模块