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