6

作为机械罗盘的用户,我注意到磁力计提供的航向通常偏离 45 度或更多,尽管在这种情况下没有出现校准显示。

如果我在户外测试或使用我的应用程序,我会在指南针视图出现时校准磁力计。这行得通,看来这是必要的。

我不想向我的应用程序的用户显示一个不准确的航向,当可以通过使用八字形运动进行频繁校准来实现或多或少准确的航向时。

有没有人知道每次我的指南针视图出现时强制显示磁力计校准视图的解决方案?

我在这里搜索了所有(?)帖子,只有一个人有类似的想法,但没有答案。

4

4 回答 4

3

恐怕没有办法做到这一点 - 虽然 API 允许您关闭校准视图(使用dismissHeadingCalibrationDisplay调用)以防止它中断您的应用程序界面,但无法强制开始校准。如果您认为它可能有用,我建议向 Apple 提交功能请求。

于 2013-02-24T11:25:16.760 回答
1
    - (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager
*)manager {
        if(!manager.heading) return YES; // Got nothing, We can assume we got to calibrate.
        else if( manager.heading.headingAccuracy < 0 ) return YES; // 0 means invalid heading, need to calibrate
        else if( manager.heading.headingAccuracy > 5 )return YES; // 5 degrees is a small value correct for my needs, too.
        else return NO; // All is good. Compass is precise enough.
    }

字体: 罗盘校准objective-c

于 2014-03-10T16:14:55.327 回答
1

我认为在 ios6 及以下版本中没有任何 api :(

于 2013-02-24T11:24:10.800 回答
1

拿一块冰箱磁铁,将它移动到 iPhone 屏幕的顶部。您可能还需要同时在几个轴上旋转 iPhone;有创意。

请注意,要再次用磁铁欺骗磁力计,您可能需要让它自行重置为地球磁场。您可以通过在所有轴上旋转 iPhone 来做到这一点。

在校准屏幕再次消失后,我遇到了一个错误。上面的方法可以让我在10秒左右的时间内强制它随意出现。

一些附加信息: 当校准屏幕出现时,AppDelegateapplicationWillResignActive被调用。然后当它完成时:applicationDidBecomeActive。(我的错误:我只在 中重新启动了我的运动管理器applicationWillEnterForeground,而不是在applicationDidBecomeActive。)

于 2017-03-18T16:41:33.827 回答