如何获得图像在屏幕上显示的确切时间(Android)?

时间:2016-09-06 13:55:43

标签: java android image timestamp

对于反应时间应用,我在ImageDrawable上设置新的ImageView后,尝试获取图像在屏幕上显示的确切时间。

设置图像资源后,简单地获取时间戳的准确性不够准确,因为在ImageView.setImageDrawable()之后,Android仍会渲染图像,并在实际显示图像之前等待下一次屏幕刷新。

为了更接近实际显示时间,我到目前为止扩展了ImageView以在onDraw()中安排Choreographer.FrameCallBack

Choreographer.FrameCallback mFrameCallback = new Choreographer.FrameCallback() {
    @Override
    // From the documentation:
    // This method provides the time in nanoseconds 
    // when the frame started being rendered.
    public void doFrame(long frameTimeNanos) {
        displayedAt = frameTimeNanos;
    }
};

...

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Choreographer choreographer = Choreographer.getInstance();
    choreographer.postFrameCallback(mFrameCallback);
}

这种方法能给我时间图片实际显示在屏幕上的时间吗?或者是否有其他方法可以获得更准确的时间戳?

0 个答案:

没有答案