Сколько времени указано в метке времени акселерометра iOS - PullRequest
0 голосов
/ 21 июня 2019

Документация говорит, что отметка времени в CMAccelerometerData равна

отметке времени, которая записывает время, когда было произведено измерение события движения.А также: отметка времени - это количество времени в секундах с момента загрузки устройства.

Похоже, что это истина, если брать время из

NSProcessInfo.processInfo.systemUptime

и использование его в качестве смещения к текущему времени, скажем, эпохи Unix, работает.

Однако через некоторое время это прерывается и смещение больше не действует.Почему?

Я пытался использовать время безотказной работы с ОС следующим образом:

-(NSTimeInterval) getSystemUpTime {
  struct timeval boottime;
  int mib[2] = {CTL_KERN, KERN_BOOTTIME};
  size_t size = sizeof(boottime);

  struct timeval now;
  struct timezone tz;
  gettimeofday(&now, &tz);

  double uptime = -1;

  if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0)
  {
      uptime = now.tv_sec - boottime.tv_sec;
      uptime += (double)(now.tv_usec - boottime.tv_usec) / 1000000.0;
  }
  return uptime;
}

Однако вычисленное смещение неверно, и полученное время в прошлом, разница: -17h 10 м.

...