【问题标题】:Multiple sensors on an android applicationandroid应用程序上的多个传感器
【发布时间】:2017-01-25 19:20:25
【问题描述】:

我目前正在开发一个使用多个传感器的 android 应用程序,我使用过 mSensor= mySensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);OnCreate 方法中获取传感器和tv.setText("X: "+ sensorEvent.values[0] + ...);onSensorChanged 方法中,以在文本视图中显示加速度计值。

如何添加更多传感器并以相同方式显示它们的值? 当我说sensorEvent.values[0] 时,程序如何知道我指的是哪个传感器?

感谢您提前提供的任何帮助, 玛雅

【问题讨论】:

    标签: java android android-studio android-sensors sensor-fusion


    【解决方案1】:

    您需要使用 event.sensor.getType() 方法检查传感器值是否属于该类型的传感器。因此,如果您想同时访问磁力计和加速度计:

    sensorManager = (SensorManager)   
    getActivity().getSystemService(Context.SENSOR_SERVICE);
    sensorAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorMagnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    sensorEventListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
                magnetic = event.values;
                tv.setText("X: "+ magnetic.values[0] + ...);
            }
            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
                gravity = event.values;
                tv2.setText(X: " + gravity.values[0] + ...);
            }
        }
    }
    

    【讨论】:

    • 感谢您的帮助!
    • 如果所有传感器同时改变会怎样? event.values 的内容是什么?
    • 每个传感器都会触发一个单独的事件回调。您永远不需要担心 event.values 包含的不是进行回调的传感器的值。
    猜你喜欢
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多