首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android相机时间戳和系统时间之间进行转换?

如何在android相机时间戳和系统时间之间进行转换?
EN

Stack Overflow用户
提问于 2019-06-17 03:02:45
回答 2查看 662关注 0票数 1

在我的带有camera2界面的Android项目中,我使用AImage_getTimestamp()来获取每张图片的时间戳。但是这个时间戳不同于我在clock_gettime()中获得的系统时间。但我真的需要利用这两段时间来获得一些工作。

我可以理解这两次是在不同的架构中,但我能相互转换吗?或者说,当相机图片的时间戳被创建时,我能得到系统时间吗?

例如,相机时间戳是离散的,如ts0、ts1、ts2和ts3。在我的代码中,我希望在执行某些代码时获得一个实时时间戳ts0‘,这并不完全是ts0,而是添加了时间间隔的ts0。我怎样才能得到这个ts0?

EN

回答 2

Stack Overflow用户

发布于 2019-08-15 15:00:52

您的设备支持实时相机时间戳。如前所述,相机时间戳与引导后运行的实时时间处于相同的坐标系中。在您的ImageReader.OnImageAvailableListener中,可以使用以下代码:

代码语言:javascript
复制
long imageReaderTime = SystemClock.elapsedRealtimeNanos();

Image image = reader.acquireLatestImage();
long cameraTime = image.getTimestamp();

可以比较这两种时间戳,而且“imageReaderTime”(您感兴趣的时间戳)略大于“cameraTime”,因为onImageAvailable回调需要很少的时间通知您有关新图像的信息。这也带来了一个轻微的差异。

艾迪·塔瓦拉的回答应该被接受。

票数 1
EN

Stack Overflow用户

发布于 2019-06-20 17:52:35

通常,根据来源的值,相机时间戳要么是基于CLOCK_MONOTONIC,要么是基于CLOCK_BOOTTIME。

当源未知时使用单调;但是无法保证相机时间戳与系统其他部分之间的同步质量;也就是说,曝光时间的实际开始时间可能会缩短相当几毫秒。

实时意味着时间戳位于CLOCK_BOOTTIME时间基中(在Java中,它与SystemClock#elapsedRealtimeNanos匹配)。实时时间戳将密切同步,以便能够与惯性传感器数据(陀螺仪等)准确地结合起来。

我不知道你从clock_gettime上看到了哪种时间戳,但最简单的选择是匹配相机的来源。否则,您需要确定您使用的时间和相机使用之间的偏移量。偏移量不会在单个相机会话中改变,所以您可以在相机使用开始时只测量一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56624245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档