不少人趕腳搖一搖用着很歡樂~實際實現起來很簡單。瞭解Sensor傳感器使用方法便可。this
搖一搖功能只使用到Sensor.TYPE_ACCELEROMETER加速度傳感器spa
首先acticity要實現SensorEventListener接口接口
初始化傳感器服務 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);事件
而後重寫onSensorChanged方法根據時間類型和偏移值判斷便可 事件類型:event.sensor.getType() 偏移值 event.valuesci
加速度傳感器返回值的單位是加速度的單位 m/s^2(米每二次方秒),有三個方向的值分別是
values[0]: x-axis 方向加速度
values[1]: y-axis 方向加速度
values[2]: z-axis 方向加速度
其中x,y,z方向的定義是以水平放置在的手機的右下腳爲參照系座標原點
x 方向就是手機的水平方向,右爲正
y 方向就是手機的水平垂直方向,前爲正
z方向就是手機的空間垂直方向,天空的方向爲正,地心的方向爲負get
最後要注意在onStop() onPause()裏註銷傳感器的服務 mSensorManager.unregisterListener(this);it
onResume()裏重載服務 ://加速度傳感器event
mSensorManager.registerListener(this, List
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 方法
//還有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,
//根據不一樣應用,須要的反應速率不一樣,具體根據實際狀況設定
SensorManager.SENSOR_DELAY_NORMAL);