デバイスモーションのタイムスタンププロパティをnslogします。Nslogタイムスタンプ
デバイスの動きがクラスCMMotionManager.devicemotion.timestamp
任意のアイデアです。
デバイスモーションのタイムスタンププロパティをnslogします。Nslogタイムスタンプ
デバイスの動きがクラスCMMotionManager.devicemotion.timestamp
任意のアイデアです。
はtimestamp
プロパティがNSTimeInterval
あるので、あなたが行うことができる必要があります:あなたの代わりに%@
の%f
を使用し、直接それをログに記録できるよう
NSLog(@"Motion at time: %@",
[NSDate dateWithTimeIntervalSinceReferenceDate:devicemotion.timestamp]);
NSTimeInterval
は、単にtypedefさdouble
タイプです。
また、このタイムスタンプがアップルのリファレンス日付または標準の* nix日付に対して設定されているかどうかを示すものではありませんので、上記のメソッドが将来日付を返す場合は[NSDate dateWithTimeIntervalSince1970:]
を使用する必要があります。
@davidbittonがCMDeviceMotion
のtimestamp
が最後のデバイスの起動を基準と示唆しているように、正しいNSDate
これは@davidbittonが正しいと仮定すると、おおよそ正確NSDate
オブジェクトが得られるはず
NSDate *startupTime = [NSDate dateWithTimeIntervalSinceNow:
-1 * [[NSProcessInfo processInfo] systemUptime]];
NSDate *deviceMotionDate = [NSDate dateWithTimeInterval:devicemotion.timestamp
sinceDate:startupTime];
によって導出することができます。 (参照:NSProcessInfo -systemUptime)
しかし、これはどのように複雑に与えられた、私は今あなたが
"... event logged at %0.2f seconds since startup...", devicemotion.timestamp
デバイスモーションサンプルのタイムスタンプが、デバイスが最後に起動されたときのNSTimeIntervalであるため、これは機能しません。 2001年1月1日または1970年の共通のエポックではありません。 – davidbitton
@davidbitton + flaggers + downvoter: 'CMDeviceMotion.timestamp'プロパティが 'NSDate'であると仮定して(畳み込み?)更新されました。アップタイムに基づいています。 –
これも機能しません。 - [NSProcessInfo systemUptime]は、CPUがスリープしている間はあなたに正しい値を与えません。 –
timestamp
財産の性質を考えると、ことを簡単にするために示唆しています
日付はAppleの文書に従っているので、ここに入れた解決方法は
です。タイムスタンプは、電話機を起動してからの秒数です。
まず、最初のメッシュにoriginDateを保存します(NSDateがnilの場合)。私はこのような実際の日付にしたいとき
[self.motionManager startGyroUpdatesToQueue:self.queue withHandler:^(CMGyroData *gyroData, NSError *error) {
if (self.originDate == nil) {
self.originDate = [NSDate dateWithTimeIntervalSinceNow:-gyroData.timestamp];
}
}];
それから私は表示することができます。
[NSDate dateWithTimeInterval:mygyroData.timestamp sinceDate:self.originDate]
はあなたには、いくつかのmesureを再起動する必要がある場合はnilにoriginDateをリセットすることを忘れないでください。
@ ben-mosherのアプローチの多くのバリエーションを試した後、私はこのアプローチが一番良いと思います。実装するのはもう少し苦痛ですが、内部実装の詳細 - [NSProcessInfo systemUptime]に依存せず、より防御的な解決策です。 –
タイムスタンプはどういう意味ですか? –
CMMotionManager.devicemotionはCMDeviceMotionタイプで、そのクラスにはタイムスタンプのプロパティが含まれていませんか? –
@Robin - CMLogItemから 'timestamp'を継承します。 –