10

私は現在 を使用してCLLocationManagerおり、デバイスの現在の向きについて情報を得たいと考えています。これまでのところ、すべてが正常に機能し、機能が実装されているので、アプリを洗練させようとしています。

ユーザーがユーザー設定の見出しの更新でフラグをオフにするcompass calibrationと、アプリにそれ以上送信されない場合があります。このような場合、コンパスのキャリブレーションを再度オンにする必要があるというフィードバックをユーザーに提供したいと思います。そうしないと、アプリが機能しません。

ユーザーがアプリの をオフにしてもlocation services、磁針路を受信することがわかりました。しかし、ユーザーが「コンパスのキャリブレーション」設定をオフにすると、ヘディングの更新を受信できなくなります。CoreLocationしかし、「コンパスキャリブレーション」がオフになっていることをフレームワークでどのように識別できますか?

CLLocationManagerDelegate」は、

- (void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

方法。ただし、ステータスは、アプリの「位置情報サービス」がイン/アクティブである場合にのみ表示されます。

私はまた、いくつかの有効な情報を取得しようとしました

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error

delegateメソッド、成功なし。

CoreLocation「コンパスキャリブレーション」フラグがオン/オフされているかどうかをフレームワークに教えてくれるものはありますか?

4

1 に答える 1

6

私が見つけたものから、コンパスのキャリブレーションがオフになっているnewHeading.trueHeadingはずlocationManager:didUpdateHeading:です。-1これはそれを行う必要があります:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    if(newHeading.trueHeading == -1)
        //Compass calibration is off provided location services are on for the app
}
于 2015-01-04T17:52:09.790 に答える