android传感器的使用

一、获得SensorManager对象

          sensorManager = (SensorManager) getSystemService( SENSOR_SERVICE );
二、获得想得到的传感器(这里获得的是加速传感器)
           sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
          如果想知道设备上所有的传感器,可以使用
          List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
          for(Sensor sensor:sensors)
          {
                    System.out.println(sensor.getName()+"::"+sensor.getVendor()+"::"+sensor.getType());
      }   
          TYPE_ALL代表返回设备所有传感器对象,然后用循环输出传感器的名字等信息,
          常用的传感器因手机设备不同而不同,三星S5830上的所有传感器信息如下
          
 
三、创建监听器
         sensorEventListener = new SensorEventListener() {
                  
                   public void onSensorChanged(SensorEvent event) {
                        System. out.println("---" +event.values[0]);
                        System. out.println("---" +event.values[1]);
                        System. out.println("---" +event.values[2]);                       
                  }                  
                   public void onAccuracyChanged(Sensor sensor, int accuracy) {
                         // TODO Auto-generated method stub                        
                  }            
            };   
四、为传感器绑定监听器
 
        sensorManager.registerListener(sensorEventListener ,sensor , SensorManager.SENSOR_DELAY_NORMAL );  
 
这样当传感器数据发生变化时就会将事件信息封装成一个event对象传递给监听器,通过监听器中的回调函数实现数据的获取与处理
 
完整代码如下
 
  1. package com.android.activity;  
  2. import java.util.List;  
  3. import android.hardware.Sensor;  
  4. import android.hardware.SensorEvent;  
  5. import android.hardware.SensorEventListener;  
  6. import android.hardware.SensorManager;  
  7. import android.os.Bundle;  
  8. import android.app.Activity;  
  9. public class SensorActivity extends Activity {  
  10.     SensorManager sensorManager = null;  
  11.     Sensor sensor = null;  
  12.     SensorEventListener sensorEventListener=null;  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_sensor);  
  17.         sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);  
  18.         //输出设备上所有传感器信息  
  19.         List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);        
  20.         for(Sensor sensor:sensors){  
  21.             System.out.println(sensor.getName()+"::"+sensor.getVendor()+"::"+sensor.getType());  
  22.         }     
  23.         //获取加速度传感器  
  24.         sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);  
  25.         //声明监听器  
  26.         sensorEventListener = new SensorEventListener() {             
  27.             public void onSensorChanged(SensorEvent event) {  
  28.                 System.out.println("---"+event.values[0]);  
  29.                 System.out.println("---"+event.values[1]);  
  30.                 System.out.println("---"+event.values[2]);                
  31.             }  
  32.               
  33.             public void onAccuracyChanged(Sensor sensor, int accuracy) {  
  34.                 // TODO Auto-generated method stub                
  35.             }         
  36.         };        
  37.           
  38.         //给传感器绑定监听器  
  39.         sensorManager.registerListener(sensorEventListener,sensor, SensorManager.SENSOR_DELAY_NORMAL);  
  40.     }  
  41.     @Override  
  42.     protected void onPause() {  
  43.         //在这里需要将绑定的监听器释放,否则即使程序退出监听程序仍会继续  
  44.         sensorManager.unregisterListener(sensorEventListener);  
  45.         super.onPause();  
  46.     }  
  47. }  
posted @ 2013-03-07 11:37  tianxiayoushuang  阅读(411)  评论(0编辑  收藏  举报