1.Sensor類型
Android中有多種傳感器,目前Android SDK支持的傳感器有:光線傳感器,旋轉向量傳感器,壓力傳感器,陀螺儀傳感器,加速度傳感器,重力傳感器,方向傳感器,磁場傳感器,近程傳感器等。但並不是所有手機都具有全部傳感器,一般高端手機具有大多數傳感器,畢竟傳感器都需要money的,價格自然不菲。
2.Sensor實際應用
那麼在Android開發中,如何使用傳感器,將傳感器功能添加到Android應用中呢,例如微信的搖一搖,通過加速傳感器,觸發尋找附近的人;例如每次接聽電話時,當手機靠近耳朵時,手機會黑屏,這就是光線傳感器起作用。
3.Sensor使用步驟
- 獲取傳感器管理對象SensorManager
- 創建傳感器事件接聽器的類,該類必須實現android.hardware.SensorEventListner接口
- 使用SensorManager.registerListener方法註冊指定的傳感器
4.傳感器事件接口
SensorEventListner接口,該接口的onSensorChanged()和onAccuracyChanged()方法用於處理相應的傳感器事件
1 public interface SensorEventListener { 2 3 //傳感數據變化調用 4 public void onSensorChanged(SensorEvent event); 5 //傳感器精準度變化時調用 6 public void onAccuracyChanged(Sensor sensor, int accuracy); 7 }
5.簡單代碼實現
定義SensorManager
1 SensorManager sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
定義一個匿名內部類或者定義一個類實現SensorEventListner接口
1 private SensorEventListener sensorEventListener=new SensorEventListener() { 2 3 @Override 4 public void onSensorChanged(SensorEvent event) { 5 6 float[] values=event.values; 7 float x = values[0]; 8 float y = values[1]; 9 float z = values[2]; 10 } 11 @Override 12 public void onAccuracyChanged(Sensor sensor, int accuracy) { 13 14 } 15 };
註冊和關閉傳感器監聽事件
@Override protected void onResume() { super.onResume(); if(sensorManager!=null){ sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } } @Override protected void onPause() { super.onPause(); if(sensorManager!=null){ sensorManager.unregisterListener(sensorEventListener); } }