傳感器的使用方法

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);
        }
    }
複製代碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章