I get get CMDeviceMotion oggetti da CMMotionManager. Una delle proprietà di CMDeviceMotion è timestamp, che viene espressa come NSTimeInterval (double). Ciò consente una precisione di timestamp "sotto millisecondo", in base alla documentazione.NSTimeInterval per unix timestamp
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"Sample: %d Timestamp: %f ",counter, motion.timestamp);
}
Sfortunatamente, NSTimeInterval viene calcolato dall'ultimo avvio del dispositivo, ponendo sfide significative per utilizzarlo nella sua forma originale.
Qualcuno ha un codice funzionante per convertire questo NSTimeInterval in un timestamp simile a Unix (fuso orario UTC)?
Grazie!
'NSTimeInterval' è in genere relativo alla data di riferimento. Dove si ottiene che questo è relativo dall'ultimo avvio del dispositivo? –
LOL in "sub millisecondo". 'NSTimeInterval' è un' double' con 53 bit di precisione, con una risoluzione di almeno 1/2^52 * (tempo dall'1/01/01). Questo attualmente arriva a circa 80 nanosecondi. Non solo non hanno ottenuto * alcuna * precisione, come direbbe un minuto con un calcolatore portatile, ma ora è impossibile calibrare in modo affidabile i timestamp con qualsiasi altra cosa con una precisione di 10 millisecondi. Inoltre, sospetto che le misurazioni siano prese al tempo libero del chip del sensore, mentre le marcature temporali riflettono quando il kernel ha avuto il controllo sull'elaborazione dei dati. Che casino. – Potatoswatter