android---加速传感器
生活随笔
收集整理的這篇文章主要介紹了
android---加速传感器
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.首先獲得傳感器管理器的實(shí)例
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.通過傳感器管理器獲得加速傳感器
accelerateSensor = getSensorManager(context).getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3.注冊加速傳感器的監(jiān)聽器
sensorManager.registerListener(listener, sensor, rate)
參數(shù)說明:
listener:加速傳感器監(jiān)聽器實(shí)例
sensor :加速傳感器實(shí)例,實(shí)現(xiàn)搖一搖使用的是accelerateSensor
rate :感應(yīng)器反應(yīng)速度,有四個(gè)常量共選擇
SENSOR_DELAY_NORMAL:匹配屏幕方向的變化,默認(rèn)傳感器速度
SENSOR_DELAY_UI:匹配用戶接口
如果更新UI建議使用SENSOR_DELAY_GAME:
匹配游戲,游戲開發(fā)建議使用SENSOR_DELAY_FASTEST.:匹配所能達(dá)到的最快
根據(jù)情況選擇,一般情況選擇第一種就可以
傳感器監(jiān)聽器:SensorEventListener有兩個(gè)回調(diào)方法
onSensorChanged(SensorEvent event)和onAccuracyChanged(Sensor sensor, int accuracy)
第一個(gè)是傳感器值變化的相應(yīng)方法
第二個(gè)是反應(yīng)速度變化的相應(yīng)方法
兩個(gè)方法會(huì)同時(shí)被調(diào)用
onSensorChanged(SensorEvent event) 介紹
onSensorChanged(SensorEvent event)
event的實(shí)例的values變量非常重要,根據(jù)傳感器的不同,里面的值代表的含義也不相同,以加速傳感器為例:
values該變量的類型是float[]數(shù)組,最多有三個(gè)元素:
float x = values[0] 代表X軸
float y = values[1] 代表Y軸
float z = values[2] 代表Y軸
public class ShakeSensorListener implements SensorEventListener {@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {int sensorType=sensorEvent.sensor.getType();float []values=sensorEvent.values;float x = Math.abs(values[0]);float y = Math.abs(values[1]);float z = Math.abs(values[2]);if (sensorType==Sensor.TYPE_ACCELEROMETER){int ACCELERATE_VALUE=15;//傳感器閾值if (x >= ACCELERATE_VALUE || y >= ACCELERATE_VALUE|| z >= ACCELERATE_VALUE) {Toast.makeText(MainActivity.this,"accelerate speed :"+ (x >= ACCELERATE_VALUE ? x: y >= ACCELERATE_VALUE ? y : z),Toast.LENGTH_SHORT).show();long[]patterns={100,1000,100,400};//靜止時(shí)間 震動(dòng)時(shí)間VibrateHelper.Vibrate(MainActivity.this,patterns,false);Log.i("zy","搖到?jīng)]");}}}總結(jié)
以上是生活随笔為你收集整理的android---加速传感器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。