如何在iOS上找到应用程序启动时间?

时间:2015-03-09 16:56:37

标签: ios vuforia

我们正在使用Qualcomm的Vuforia API在iOS上进行AR。它报告相对于应用程序开始的时间戳:

  

double com.qualcomm.vuforia.Frame.getTimeStamp()
  用于定义拍摄原始相机图像的时间戳   以秒表示的值,表示应用程序启动时间的偏移量。   与图像创建无关,时间戳总是指时间   拍摄的相机图像。

其他事项报告相对于系统启动时间(Motion API)或固定参考日期。我需要将这些全部相对于相同的偏移量,这意味着我需要知道应用程序何时在其他时间框架中启动。

任何指针都非常感激。我觉得我错过了一些明显的东西!

2 个答案:

答案 0 :(得分:0)

DICLAIMER:我不知道vuforia是什么

这将为您提供当前时间。你可以在你的应用程序开始时运行它。

NSDate *startDate = [NSDate date];

如果你想要这个和另一个事件之间的秒数,你可以这样做

NSLog(@"%f seconds have elapsed since start", [[NSDate date] timeIntervalSinceDate:startDate]);

答案 1 :(得分:0)

只是阅读评论,所以这根本没有帮助:)

这是一个显示时间的代码示例

#import "AppDelegate.h"
#include <sys/types.h>
#include <sys/sysctl.h>

@interface AppDelegate ()
@property(assign) NSTimeInterval bootTimestamp;
@property(assign) NSTimeInterval startTimestamp;
@end

@implementation AppDelegate

NSTimeInterval GetBootTimestamp() {
#define MIB_SIZE 2
    int mib[MIB_SIZE];
    size_t size;
    struct timeval  boottime;

    mib[0] = CTL_KERN;
    mib[1] = KERN_BOOTTIME;
    size = sizeof(boottime);
    if (sysctl(mib, MIB_SIZE, &boottime, &size, NULL, 0) != -1)
    {
        // successful call
        return boottime.tv_sec + boottime.tv_usec / 1.e6;
    }

    return -1;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.bootTimestamp = GetBootTimestamp(); //secs
    self.startTimestamp = [NSDate date].timeIntervalSince1970;

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self laterEvent];
    });
    return YES;
}

- (void)laterEvent {
    NSTimeInterval eventTimestamp = [NSDate date].timeIntervalSince1970;
    NSLog(@"%lf s after start of app", eventTimestamp-self.startTimestamp);
    NSLog(@"%lf s after boot of device", eventTimestamp-self.bootTimestamp);
}

@end