查明罗盘传感器的精度是否低
Finding out if compass sensors has low accuracy
我目前正在 Android 和 iOS 应用程序中集成 Compass View。正如预期的那样,传感器值并不总是完美的。这不是什么大问题,但如果传感器不准确,警告用户会很好。那么有什么办法可以判断传感器的精度是否低?
在 Android 上,在 SensorEventListener
中有一个函数 onAccuracyChanged(Sensor sensor, int accuracy)
,您可以在其中检查设备磁力计的准确性。有 4 个准确度级别(参见 SensorManager
class):
SENSOR_STATUS_ACCURACY_HIGH = 3
SENSOR_STATUS_ACCURACY_MEDIUM = 2
SENSOR_STATUS_ACCURACY_LOW = 1
SENSOR_STATUS_UNRELIABLE = 0
不过我不确定如何在 ios 上做到这一点。
此信息也可用于 onSensorChanged
中收到的每个 SensorEvent。
在 iOS 中,每次更新都会提供传感器精度。 headingAccuracy < 0 表示该值错误。如果>0,则表示该值与真实值之间的最大偏差,可以定义一个阈值。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
NSLog(@"LocationManager did update Heading with accuracy %g", newHeading.headingAccuracy);
if(newHeading.headingAccuracy < 0) {
NSLog(@"Invalid value!");
} else if(newHeading.headingAccuracy < ACCURACY_THRESHOLD) {
NSLog(@"Too low Accuracy!");
} else {
NSLog(@"Accuracy is good enough to use value");
}
}
我目前正在 Android 和 iOS 应用程序中集成 Compass View。正如预期的那样,传感器值并不总是完美的。这不是什么大问题,但如果传感器不准确,警告用户会很好。那么有什么办法可以判断传感器的精度是否低?
在 Android 上,在 SensorEventListener
中有一个函数 onAccuracyChanged(Sensor sensor, int accuracy)
,您可以在其中检查设备磁力计的准确性。有 4 个准确度级别(参见 SensorManager
class):
SENSOR_STATUS_ACCURACY_HIGH = 3
SENSOR_STATUS_ACCURACY_MEDIUM = 2
SENSOR_STATUS_ACCURACY_LOW = 1
SENSOR_STATUS_UNRELIABLE = 0
不过我不确定如何在 ios 上做到这一点。
此信息也可用于 onSensorChanged
中收到的每个 SensorEvent。
在 iOS 中,每次更新都会提供传感器精度。 headingAccuracy < 0 表示该值错误。如果>0,则表示该值与真实值之间的最大偏差,可以定义一个阈值。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
NSLog(@"LocationManager did update Heading with accuracy %g", newHeading.headingAccuracy);
if(newHeading.headingAccuracy < 0) {
NSLog(@"Invalid value!");
} else if(newHeading.headingAccuracy < ACCURACY_THRESHOLD) {
NSLog(@"Too low Accuracy!");
} else {
NSLog(@"Accuracy is good enough to use value");
}
}