首页 > 系统 > Android > 正文

Android实现检测手机摇晃的监听器

2019-12-12 04:11:56
字体:
来源:转载
供稿:网友

android 检测手机摇晃的监听器,实现代码如下所示:

public class ShakeListener implements SensorEventListener {  // 速度阈值,当摇晃速度达到这值后产生作用  private static final int SPEED_SHRESHOLD = 3000;  // 两次检测的时间间隔  private static final int UPTATE_INTERVAL_TIME = 70;  // 传感器管理器  private SensorManager sensorManager;  // 传感器  private Sensor sensor;  // 重力感应监听器  private OnShakeListener onShakeListener;  // 上下文  private Context mContext;  // 手机上一个位置时重力感应坐标  private float lastX;  private float lastY;  private float lastZ;  // 上次检测时间  private long lastUpdateTime;  // 构造器  public ShakeListener(Context c) {   // 获得监听对象   mContext = c;   start();  }  // 开始  public void start() {   // 获得传感器管理器   sensorManager = (SensorManager) mContext      .getSystemService(Context.SENSOR_SERVICE);   if (sensorManager != null) {     // 获得重力传感器     sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);   }   // 注册   if (sensor != null) {     sensorManager.registerListener(this, sensor,        SensorManager.SENSOR_DELAY_GAME);   }  }  // 停止检测  public void stop() {   sensorManager.unregisterListener(this);  }  // 设置重力感应监听器  public void setOnShakeListener(OnShakeListener listener) {   onShakeListener = listener;  }  // 重力感应器感应获得变化数据  public void onSensorChanged(SensorEvent event) {   // 现在检测时间   long currentUpdateTime = System.currentTimeMillis();   // 两次检测的时间间隔   long timeInterval = currentUpdateTime - lastUpdateTime;   // 判断是否达到了检测时间间隔   if (timeInterval < UPTATE_INTERVAL_TIME)     return;   // 现在的时间变成last时间   lastUpdateTime = currentUpdateTime;   // 获得x,y,z坐标   float x = event.values[0];   float y = event.values[1];   float z = event.values[2];   // 获得x,y,z的变化值   float deltaX = x - lastX;   float deltaY = y - lastY;   float deltaZ = z - lastZ;   // 将现在的坐标变成last坐标   lastX = x;   lastY = y;   lastZ = z;   //sqrt 返回最近的双近似的平方根   double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ      * deltaZ)/ timeInterval * 10000;//  MyLog.v("thelog", "===========log===================");   // 达到速度阀值,发出提示   if (speed >= SPEED_SHRESHOLD) {     onShakeListener.onShake();   }  }  public void onAccuracyChanged(Sensor sensor, int accuracy) {}// 摇晃监听接口public interface OnShakeListener {  public void onShake();}}

以上所述是小编给大家介绍的Android实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表