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

6
作为机械指南针的用户,我注意到磁力计提供的方向经常偏差45度或更多,尽管在这种情况下未出现校准显示。
如果我在户外测试或使用我的应用程序时,当我的指南针视图出现时,我会校准磁力计。 这有效,似乎这是必要的。
我不想在可能通过执行频繁的八字动作进行校准来获得更或多或少准确的方向时向我的应用程序用户显示不准确的方向。
有没有人知道如何强制显示磁力计校准视图,每次我的指南针视图出现时?
我搜索了这里的所有(?)帖子,只有一个人有类似的想法,但没有答案。
4个回答

3

很抱歉,没有办法做到这一点 - 虽然API允许你使用dismissHeadingCalibrationDisplay调用来消除校准视图,以防止其打断应用程序的界面,但没有办法强制启动校准。如果您认为这可能有用,建议向Apple提交功能请求。


1
没有API,但是这个简单的方法可行。 - meaning-matters

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


问题不同:假设iOS认为当前不需要校准,但我认为它总是需要的,所以每当我显示指南针时,我想要校准视图。 - AlexWien
“locationManagerShouldDisplayHeadingCalibration:” 在第一次请求航向更新时被调用,因此您可以在显示指南针并返回TRUE后立即开始“startHeadingUpdates”。这是您尝试做的吗? - Pablo A.
不,当在户外徒步旅行时,你经常需要使用指南针。但是只有在你每次使用之前校准它,指南针才能准确无误。因此,我想强制!!我的应用程序在决定显示它时显示校准视图。 - AlexWien
你的代码无法运行。你正在将CLHeadingaccuracyDegree进行比较。此外,该方法在第一次更新航向后被调用。 - philipp

1

我不认为iOS6及以下版本有任何相关的API :(


1

使用冰箱磁铁在iPhone屏幕上方移动。您可能还需要同时绕几个轴旋转iPhone;创造性地尝试。

请注意,为了再次用磁铁欺骗磁力计,您可能需要允许其重置到地球磁场。您可以通过在所有轴上旋转iPhone来实现此目的。

我遇到了一个错误,在校准屏幕再次消失后出现。以上方法使我能够在大约10秒内随意强制它出现。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接