将多个 Android 传感器与辅助类相结合



我正在尝试构建一个应用程序,该应用程序允许我同时从多个传感器检索数据。我仍然没有弄清楚我将如何到达那里,所以我首先为结构化布局实现一个 SensorObject 类。

此传感器对象实现 SensorEventListener 以及通常的 onaccuracychanged 和 onsensorchanged 方法。我暂时将这两个方法留空,因为这个类是继承的。我还实现了OnResume方法,如下所示:

    public void OnResume() {
    sensorManager.registerListener(this, sensor,
            SensorManager.SENSOR_DELAY_NORMAL);
}

我依次实现了一个扩展传感器对象的加速度计对象。实质上,它在 onSensor 中做了一些东西 改变.

我的主要问题就在这里1)在活动中,我永远不会从加速度计对象获得结果,因为它只会进入"onSensorChanged"方法,直到执行以下代码之后

    AccelerometerObject ao =  new AccelerometerObject(Sensor.TYPE_ACCELEROMETER, this);
    ao.OnResume();
    txtAccelerometerData = (TextView) findViewById(R.id.txtAccelerometerData);
    txtAccelerometerData.setText(ao.toString());

为什么它不立即访问传感器数据,而是按顺序进行?该对象仍然没有值,因为尚未访问 onresume 方法。我是否需要使用单独的线程?效率不是那么重要,我所需要的只是用于实验的有效数据。

2) 是否可以使用上述方法实现多个同步传感器?

任何帮助将不胜感激。

下面是请求的加速计对象。

public class AccelerometerObject extends SensorObject {
public float[] values;
public AccelerometerObject(int sensorType, Context _Context) {
    super(sensorType, _Context);
}   
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
@Override
public void onSensorChanged(SensorEvent event) {
    AccelerometerValues = event.values;
    onPause();
}

@Override
public String toString() {
    if (values != null) {
        return "X is " + values[0]
                + ", Y is " + values[1]
                + " and Z is "
                + values[2]);
    } else
        return "N/A";
}

}

我刚刚在这里上传了一个日食项目:http://cyrixmorten.net/CA-Project.zip

该项目已用于收集上下文感知课程的数据。

它演示了从以下位置获取传感器值

  • 加速度计
  • 陀螺仪
  • 取向
  • 全球定位系统

在实现中,我为每个传感器实现了服务。这可能过于复杂,但我们需要在后台继续数据收集,即使没有焦点。

编辑:

顺便说一下,所有 *ResultReceiver 对象仅充当活动与它们所表示的服务之间的粘合剂。*ResultReceiver 对象接收传感器事件,并将其转换为自定义接口,然后由 MainActivity 使用。

我可以想象这部分可能会导致混乱,但我只是不喜欢在我的活动中弄乱很多不同的捆绑包和字符串,当我可以通过界面获得确切的值时 - 我猜只是个人保护免受错别字的设计选择。

最新更新