android摇一摇功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zs704966613/article/details/54863804

android摇一摇功能是通过手机中的加速度传感器实现的。当加速度大于某一值时,我们认为手机发生摇动,进而进行更多的处理。

功能实现主要有以下几个步骤:


1.添加权限

<!--重力加速度传感器权限 -->
<uses-permission android:name="android.hardware.sensor.accelerometer"/>

2.获取传感器管理器

SensorManager manager = (SensorManager) this.getSystemService(Service.SENSOR_SERVICE);

3.编写传感器监听器,继承SensorEventListener,其中Sensor.TYPE_ACCELEROMETER为加速度传感器的类型,17是晃动的幅度,有些手机怎么晃动都很难超过20
public class MySensorEventListener implements SensorEventListener {
    @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]) > 17 || Math.abs(values[1]) > 17 || Math
                    .abs(values[2]) > 17))
            {
                Log.d("sensor x ", "============ values[0] = " + values[0]);
                Log.d("sensor y ", "============ values[1] = " + values[1]);
                Log.d("sensor z ", "============ values[2] = " + values[2]);
                //在这里编写功能代码。。。
            }
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
}

4.注册监听器
 
  
listener = new MySensorEventListener(this);
manager.registerListener( listener, manager.getDefaultSensor(Sensor. TYPE_ACCELEROMETER), SensorManager. SENSOR_DELAY_NORMAL);

以上便是实现摇一摇功能的主要步骤,demo源码地址https://github.com/Sunnick/Shake,有兴趣的童鞋可以下载。

以上如有不当之处,欢迎指正,谢谢。
	

猜你喜欢

转载自blog.csdn.net/zs704966613/article/details/54863804