首先一个工具类:

package www.basketi.cn.basketball.androidtojs;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;/** * 摇一摇工具类 * 使用说明: * 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;}
然后在类中注册和销毁

@Overrideprotected void onResume() {    super.onResume();    mShakeUtils.onResume();}@Overrideprotected void onPause() {    super.onPause();    mShakeUtils.onPause( );}
然后在主类中创建对象

mShakeUtils = new ShakeUtils( this );mShakeUtils.setOnShakeListener(new ShakeUtils.OnShakeListener() {    @Override    public void onShake() {        Toast.makeText(MainActivity.this,"摇一摇",Toast.LENGTH_SHORT).show();    }});

更多相关文章

  1. android常用系统bar高度
  2. Android(安卓)使用 keytool 查看签名方法
  3. Android拍照,读取相册
  4. 获取手机基本信息的工具类
  5. ExpandableListView 使用方法
  6. android三种监听方法
  7. Android重写ViewPager修改滑动灵敏度
  8. android 编译错误解决方法(一)
  9. Android(安卓)基于surfaceView绘制正弦曲线

随机推荐

  1. Android(安卓)自定义View之View的绘制
  2. Android高低API版本兼容之@TargetApi
  3. 查看android sqlite数据库常用操作
  4. Android(安卓)应用程序发布流程---碗豆荚
  5. Android(安卓)Listener侦听的N种写法及实
  6. [Android(安卓)Training视频系列]2.4 Rec
  7. 手工打包 system.img
  8. android开发学习2——hello world
  9. Proguard语法及常用proguard.cfg代码段
  10. Android(安卓)Dialog 弹出 居右、居左、