android搖一搖功能實現

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,有興趣的童鞋可以下載。

以上如有不當之處,歡迎指正,謝謝。
	

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章