摇一摇工具类

来源:互联网 发布:淘宝网男冬装 编辑:程序博客网 时间:2024/05/18 00:05

                                       摇一摇工具类

一、原理介绍

Android手机中摇一摇的功能已经很常见了,最近接触到了这个功能,原理很简单:使用加速度传感器,在晃动手机时,监听加速度在各个方向的变化,当加速度值超过设定的灵敏度时,则触发摇一摇功能。

二、功能实现

摇一摇功能:我将摇一摇功能封装成了一个类ShakeUtils,在使用时按照注释中的说明使用即可。

/** * 摇一摇工具类 * 使用说明: * private ShakeUtils mShakeUtils = null; * 1、在需要使用摇一摇功能的Activity实例化该工具类并设置摇一摇监听: * mShakeUtils = new ShakeUtils( this ); * mShakeUtils.setOnShakeListener(new OnShakeListener{ * public void onShake(){ * // 此处为摇一摇触发后的操作 * } * }); *  * 2、分别在Activity的onResume和onPause方法中调用该工具类的onResume和onPause方法: * mShakeUtils.onResume(); * mShakeUtils.onPause(); * */public class ShakeUtils implements SensorEventListener {  public ShakeUtils( Context context ){    mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);    }    public void setOnShakeListener( OnShakeListener onShakeListener ){    mOnShakeListener = onShakeListener;  }    public void onResume(){    mSensorManager.registerListener(this,          mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),                  SensorManager.SENSOR_DELAY_NORMAL);  }    public void onPause(){    mSensorManager.unregisterListener(this);   }    @Override  public void onAccuracyChanged(Sensor sensor, int accuracy) {      }  @Override  public void onSensorChanged(SensorEvent event) {    int sensorType = event.sensor.getType();          //values[0]:X轴,values[1]:Y轴,values[2]:Z轴            float[] values = event.values;          if (sensorType == Sensor.TYPE_ACCELEROMETER){              //这里可以调节摇一摇的灵敏度            if ((Math.abs(values[0]) > SENSOR_VALUE || Math.abs(values[1]) > SENSOR_VALUE || Math.abs(values[2]) > SENSOR_VALUE)){            System.out.println("sensor value == " + " " + values[ 0 ] + " " + values[ 1 ] + " " +  values[ 2 ] );                if( null != mOnShakeListener ){                mOnShakeListener.onShake( );                }            }          }    }    public interface OnShakeListener{    public void onShake();  }    private SensorManager mSensorManager = null;  private OnShakeListener mOnShakeListener = null;  private static final int SENSOR_VALUE = 14;}


0 0
原创粉丝点击