我正在尝试构建一个允许我同时从多个传感器检索数据的应用程序。我还没有弄清楚我将如何到达那里,所以我开始为结构化布局实现一个 SensorObject 类。
这个传感器对象实现了 SensorEventListener 以及通常的 onaccuracychanged 和 onsensorchanged 方法。由于这个类是继承的,所以我暂时将这两个方法都留空。我还像这样实现了 OnResume 方法:
public void OnResume() {
sensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
随后,我实现了一个扩展传感器对象的加速度计对象。基本上,它在 onSensor Changed 中做了一些事情。
我的主要问题在这里 1)在活动中,我永远不会从加速度计对象获得结果,因为它只进入'onSensorChanged'方法,直到执行以下代码之后:
AccelerometerObject ao = new AccelerometerObject(Sensor.TYPE_ACCELEROMETER, this);
ao.OnResume();
txtAccelerometerData = (TextView) findViewById(R.id.txtAccelerometerData);
txtAccelerometerData.setText(ao.toString());
为什么它不立即访问传感器数据,而是按顺序进行?该对象仍然没有值,因为尚未访问 onresume 方法。我需要使用单独的线程吗?效率并不那么重要,我所需要的只是用于实验的有效数据。
2)是否可以使用上述方法实现多个同时传感器?
任何帮助将不胜感激。
以下是所要求的 AccelerometerObject。
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";
}
}