【问题标题】:Is there a way to retrieve multiple sensor data in Android有没有办法在 Android 中检索多个传感器数据
【发布时间】:2011-05-19 14:30:52
【问题描述】:

我正在尝试获取加速度计和方向数据。目前,我创建了一个 AccelerometerManager 和 OrientationManager。他们都做同样的事情;实现 SensorEventListener 并从 onSensorChanged() 侦听器中的 values[] 检索数据。

有没有更简单的方法来做到这一点?似乎有 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);

【问题讨论】:

    标签: android orientation accelerometer sensors


    【解决方案1】:

    你能试试这样的吗:

    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);
    

    【讨论】:

    • 顺便说一句,你的Activity没有理由不能直接实现SensorEventListener,然后你将“this”作为第一个参数传递给registerListener()。
    • SensorEventListener 不是接口吗?你能做一个接口的实例吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 2020-01-12
    • 2022-11-17
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多