我正在制作一个应用程序,其中使用两个传感器。
TYPE_MAGNETIC_FIELDTYPE_GRAVITY我初始化了各自的传感器,然后在onSensorChanged函数中,获取数据并在相同的位置上进行计算。
我有一个简单的问题,如何使用onAccuracyChanged函数过滤掉数据?我要中高精度的数据!
我打印了基本的声明,看看在调试应用程序时得到了什么样的准确性。
代码:
`@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
// You must implement this callback in your code.
// I initialized mValuen as mValuen = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
if (sensor == mValuen) {
switch (accuracy) {
case 0:
System.out.println("Unreliable");
break;
case 1:
System.out.println("Low Accuracy");
break;
case 2:
System.out.println("Medium Accuracy");
break;
case 3:
System.out.println("High Accuracy");
break;
}
}
}`根据我的理解,每当传感器报告一个新值onSensorChanged函数时,都会调用它。因此,我不能真正显式地调用该函数(即使可以,只要传感器报告一个新值,就会调用该函数)。
我所有的计算都在这个函数中。如何以中等和高精度过滤掉数据。谢谢。
发布于 2015-12-15 14:42:19
查看我的this答案,以获得更详细的答案。
假设这是onAccurayChanged函数。
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
// You must implement this callback in your code.
if (sensor == mValuen) {
switch (accuracy) {
case 0:
System.out.println("Unreliable");
con=0;
break;
case 1:
System.out.println("Low Accuracy");
con=0;
break;
case 2:
System.out.println("Medium Accuracy");
con=1;
break;
case 3:
System.out.println("High Accuracy");
con=1;
break;
}
}
}我声明了一个全局变量,并将其保持为0。在onSensorChanged函数中,在执行所需的计算时,要放置一个if..else条件。如果con值为1,则只进行计算。我拿到输出了。但是,请告诉我,如果我的做法在某种程度上是错误的。谢谢。
https://stackoverflow.com/questions/34273681
复制相似问题