版权声明:本文为博主原创文章,未经博主允许不得转载。 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,有兴趣的童鞋可以下载。
以上如有不当之处,欢迎指正,谢谢。