Welcome

首页 / 移动开发 / Android / Android实现检测手机摇晃的监听器

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实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!