【发布时间】:2014-04-01 13:34:04
【问题描述】:
我正在尝试构建一个允许我同时从多个传感器检索数据的应用程序。我还没有弄清楚我将如何到达那里,所以我开始为结构化布局实现一个 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";
}
}
【问题讨论】:
-
我不确定您的实施背后的确切原因。您可以注册所有您想要的传感器并在值更改时接收回调。
-
我的主要目标是同时从多个传感器检索数据。但是,我似乎有 2 个问题 1)我无法同时检索数据 2)在实现辅助类时(以避免混乱的代码),它仅在执行上述代码后才访问传感器(在文本框中显示信息)
-
你能展示AccelerometerObject类的完整代码吗?
-
你在用eclipse开发吗?
-
@Salauyou,代码已上传。
标签: java android android-sensors sensormanager