Java 将多个Android传感器与助手类相结合
我正在尝试构建一个应用程序,使我能够同时从多个传感器检索数据。我还没有弄清楚我将如何到达那里,所以我开始为结构化布局实现一个SensorObject类 此sensorobject与常用的onaccuracychanged和onsensorchanged方法一起实现SensorEventListener。由于继承了此类,我暂时将这两个方法保留为空。 我还实现了OnResume方法,如下所示:Java 将多个Android传感器与助手类相结合,java,android,android-sensors,sensormanager,Java,Android,Android Sensors,Sensormanager,我正在尝试构建一个应用程序,使我能够同时从多个传感器检索数据。我还没有弄清楚我将如何到达那里,所以我开始为结构化布局实现一个SensorObject类 此sensorobject与常用的onaccuracychanged和onsensorchanged方法一起实现SensorEventListener。由于继承了此类,我暂时将这两个方法保留为空。 我还实现了OnResume方法,如下所示: public void OnResume() { sensorManager.regist
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) 是否可以使用上述方法同时实现多个传感器
任何帮助都将不胜感激
下面是要求的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";
}
}我刚刚在这里上传了一个eclipse项目: 该项目已用于收集上下文意识课程的数据 它演示了如何从中获取传感器值
- 加速计
- 陀螺仪
- 定向
- 全球定位系统
我可以想象这一部分可能会导致混乱,但我只是不喜欢在我的活动中弄乱许多不同的捆绑包和字符串,因为我可以通过界面获得准确的值——我想这只是个人防打字错误的设计选择 我不确定你实施的确切原因。您可以注册所有想要的传感器,并在值更改时接收回调。我的主要目标是同时从多个传感器检索数据。然而,我似乎有两个问题1)我无法同时检索数据2)在实现帮助器类时(为了避免混乱的代码),只有在上述代码执行后才能访问传感器(在文本框中显示信息)您能显示AccelerometerObject类的完整代码吗?您是否使用eclipse进行开发?@Salauyou,代码已上载。感谢您的贡献,我将查看它并让您知道。没问题:)希望它有帮助。嗨,我完全放弃了这种方法,将所有传感器放在一个类中,因为它变得非常复杂,但您的解决方案指出了缺少的内容:1)您的传感器服务,我称之为对象的对象必须扩展我没有做的“服务”。2) 结果接收者需要相应地传递信息。3) 正如我所说,需要使用处理程序,我已经放弃了这种方法,但您的贡献将引导任何人找到正确的答案。因此,我将其标记为答案。谢谢。为了让所有传感器同时工作,我为每个传感器设置了事件监听器,在一个单独的线程中,我做了一个循环,从每个传感器获取数据并保存。很高兴听到这个消息,尽管我确实认为1)不需要设置单独的线程来执行此操作,2)值不应该被合并,而是由传感器推送并由活动捕获,就像我的示例代码中所做的那样,如果您运行它并按下“train me”(训练我)按钮。然而,您可以按照自己的意愿来工作,这就是这里的目标:)快乐编码