找出罗盘传感器的精度是否低

问题描述 投票:0回答:2

我目前正在Android和iOS应用程序中集成Compass View。正如所料,传感器值并不总是完美的。这不是一个大问题,但如果传感器不准确,警告用户会很好。那么有没有办法弄清楚传感器的精度是否低?

android ios cllocationmanager android-sensors
2个回答
1
投票

在Android上,在SensorEventListener中有一个函数onAccuracyChanged(Sensor sensor, int accuracy),您可以在其中检查设备磁力计的准确性。有4个级别的准确性(参见SensorManager类):

SENSOR_STATUS_ACCURACY_HIGH = 3 
SENSOR_STATUS_ACCURACY_MEDIUM = 2
SENSOR_STATUS_ACCURACY_LOW = 1 
SENSOR_STATUS_UNRELIABLE = 0

我不知道如何在ios上做到这一点。

此信息也适用于onSensorChanged中收到的每个SensorEvent。


0
投票

在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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.