android---加速传感器
生活随笔
收集整理的這篇文章主要介紹了
android---加速传感器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.首先獲得傳感器管理器的實例
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.通過傳感器管理器獲得加速傳感器
accelerateSensor = getSensorManager(context).getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3.注冊加速傳感器的監聽器
sensorManager.registerListener(listener, sensor, rate)
參數說明:
listener:加速傳感器監聽器實例
sensor :加速傳感器實例,實現搖一搖使用的是accelerateSensor
rate :感應器反應速度,有四個常量共選擇
SENSOR_DELAY_NORMAL:匹配屏幕方向的變化,默認傳感器速度
SENSOR_DELAY_UI:匹配用戶接口
如果更新UI建議使用SENSOR_DELAY_GAME:
匹配游戲,游戲開發建議使用SENSOR_DELAY_FASTEST.:匹配所能達到的最快
根據情況選擇,一般情況選擇第一種就可以
傳感器監聽器:SensorEventListener有兩個回調方法
onSensorChanged(SensorEvent event)和onAccuracyChanged(Sensor sensor, int accuracy)
第一個是傳感器值變化的相應方法
第二個是反應速度變化的相應方法
兩個方法會同時被調用
onSensorChanged(SensorEvent event) 介紹
onSensorChanged(SensorEvent event)
event的實例的values變量非常重要,根據傳感器的不同,里面的值代表的含義也不相同,以加速傳感器為例:
values該變量的類型是float[]數組,最多有三個元素:
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};//靜止時間 震動時間VibrateHelper.Vibrate(MainActivity.this,patterns,false);Log.i("zy","搖到沒");}}}總結
以上是生活随笔為你收集整理的android---加速传感器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加速度传感器的应用
- 下一篇: C#使用德卡T10读取社报告卡基本信息