ios磁力计:强制显示校准视图

时间:2013-02-23 00:57:17

标签: ios cllocationmanager calibration magnetometer

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

如果我在室外测试或使用我的应用程序,我会在罗盘视图出现时校准磁力计。这是有效的,似乎这是必要的。

我不希望向我的应用程序的用户显示不准确的标题,当有可能实现一个或多或少精确的标题时,通过使用八字形运动进行频繁校准。

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

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

4 个答案:

答案 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.
    }

字体: Compass calibration objective-c

答案 3 :(得分:1)

抓住冰箱磁铁并将其移至iPhone屏幕顶部。您可能还需要同时在几个轴上旋转iPhone;要有创意。

请注意,要用磁铁再次愚弄磁力计,您可能需要让它自己重置到地球磁场。您可以通过在所有轴上旋转iPhone来完成此操作。

校准屏幕再次消失后,我发现了一个错误。上述方法允许我在10秒左右的时间内强制它出现。

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