手机摇一摇功能

来源:互联网 发布:中银国际期货软件 编辑:程序博客网 时间:2024/04/28 14:38
/** * 工具类,实现监测摇一摇 **/public class ShakeUtil implements SensorEventListener {    private SensorManager mSensorManager = null;    private OnShakeListener mOnShakeListener = null;    //重力加速度    private static final int SENSOR_VALUE = 10;    public ShakeUtil(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{        void onShake();    }}


在代码中使用:

ShakeUtil  mShakeUtil = new ShakeUtil(getActivity());mShakeUtil.setOnShakeListener(this);@Overridepublic void onResume() {    super.onResume();    if (mShakeUtil != null)    {        mShakeUtil.onResume();    }}@Overridepublic void onPause() {    super.onPause();    if (mShakeUtil != null)    {        mShakeUtil.onPause();    }}




原创粉丝点击