作为机械指南针的使用者,我注意到磁力计提供的航向通常偏离45度或更多,尽管在那种情况下没有出现校准显示。
如果我在室外测试或使用我的应用程序,我会在罗盘视图出现时校准磁力计。这是有效的,似乎这是必要的。
我不希望向我的应用程序的用户显示不准确的标题,当有可能实现一个或多或少精确的标题时,通过使用八字形运动进行频繁校准。
每次我的指南针视图出现时,是否有人知道强制显示磁力计校准视图的解决方案?
我在这里搜索了所有(?)帖子,只有一个人有类似的想法,但没有答案。
答案 0 :(得分:3)
我担心没有办法做到这一点 - 虽然API允许你解除校准视图(使用dismissHeadingCalibrationDisplay
调用)以防止它中断你的应用程序界面,没有办法强制校准开始。如果您认为它可能有用,我建议向Apple提交功能请求。
答案 1 :(得分:1)
我认为在ios6及以下版本中没有任何api :(
答案 2 :(得分: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.
}
答案 3 :(得分:1)
抓住冰箱磁铁并将其移至iPhone屏幕顶部。您可能还需要同时在几个轴上旋转iPhone;要有创意。
请注意,要用磁铁再次愚弄磁力计,您可能需要让它自己重置到地球磁场。您可以通过在所有轴上旋转iPhone来完成此操作。
校准屏幕再次消失后,我发现了一个错误。上述方法允许我在10秒左右的时间内强制它出现。
一些附加信息:当出现校准屏幕时,会调用AppDelegate的applicationWillResignActive
。然后当它完成时:applicationDidBecomeActive
。 (我的错误:我只在applicationWillEnterForeground
中重新启动了我的动作管理器,而不是applicationDidBecomeActive
。)