我们正在使用Qualcomm的Vuforia API在iOS上进行AR。它报告相对于应用程序开始的时间戳:
double com.qualcomm.vuforia.Frame.getTimeStamp()
用于定义拍摄原始相机图像的时间戳 以秒表示的值,表示应用程序启动时间的偏移量。 与图像创建无关,时间戳总是指时间 拍摄的相机图像。
其他事项报告相对于系统启动时间(Motion API)或固定参考日期。我需要将这些全部相对于相同的偏移量,这意味着我需要知道应用程序何时在其他时间框架中启动。
任何指针都非常感激。我觉得我错过了一些明显的东西!
答案 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