Existuje způsob, jak získat více dat ze senzorů v Android

hlasů
6

Snažím se dostat oba akcelerometru a orientace dat. V současné době jsem vytvořil AccelerometerManager a OrientationManager. Oba dělají to samé; implementovat SensorEventListener a načtení dat z v onSensorChanged hodnot [] () posluchače.

Existuje jednodušší způsob, jak to udělat? Vypadá to, že má 2 manipulátory s duplicitní kód uneccessary. Existuje způsob, jak získat přístup k hodnoty [] pole s kombinovaným akcelerometru a orientace dat dohromady?

Vzhledem k tomu, ze 2 manipulátory, já jsem také mají, jak to udělat:

    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);
Položena 03/12/2010 v 08:25
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
32

Můžete zkusit něco takového:

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);
Odpovězeno 03/12/2010 v 09:49
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more