2010-12-03 60 views
6

我试图获得加速度计和方向数据。目前,我创建了一个AccelerometerManager和OrientationManager。他们都做同样的事情;实现SensorEventListener并从onSensorChanged()侦听器中的值[]中检索数据。有没有办法在Android中检索多个传感器数据

有没有更简单的方法来做到这一点?似乎有2个处理程序重复代码是不必要的。有没有办法通过组合的加速度计和方向数据来访问values []数组?

由于2个处理器的,我也不必这样做:

orientationManager = new OrientationManager(this); 
    orientationSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    orientationSensorManager.registerListener(orientationManager, 
      orientationSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
      SensorManager.SENSOR_DELAY_GAME); 

    accelerometerManager = new AccelerometerManager(this); 
    accelerometerSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    accelerometerSensorManager.registerListener(accelerometerManager, 
      orientationSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
      SensorManager.SENSOR_DELAY_GAME); 

回答

32

你可以尝试这样的事:

private SensorManager mSensorManager; 
private SensorEventListener mSensorListener; 

//// 


mSensorManager = (SensorManager) this 
       .getSystemService(Context.SENSOR_SERVICE); 
mSensorListener = new SensorEventListener() { 
    @Override 
    public void onAccuracyChanged(Sensor arg0, int arg1) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     Sensor sensor = event.sensor; 
     if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      //TODO: get values 
     }else if (sensor.getType() == Sensor.TYPE_ORIENTATION) { 
      //TODO: get values 
     } 
    } 
} 

mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); 
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); 
+0

这个完美工作,谢谢。 – trinth 2010-12-05 02:21:51

相关问题