安卓投屏延时数据如何测试,测试工具如何写?

背景:

投屏其实在android等使用场景非常非常多,比如现在火爆小米汽车的车机,上面涉及到手机和车机互联画面相关都是属于投屏范围。这种跨设备的投屏场景,流畅的体验是最重要的,这里就会要求投屏中最重要的一个性能指标,那就是投屏的延时。

说道投屏延时,这里有同学会问啥叫投屏延时?

在这里插入图片描述

比如上图所示,手机画面显示数字已经是A101,但是投屏画面的数字还是A99,为啥会有这种差异呢?

这个就因为投屏画面一般都是录制手机真实画面,但是投屏画面需要经过如下几个阶段才可以让投屏画面显示出来
在这里插入图片描述
上面每一个阶段都是需要耗费时间的,所以必然导致投屏的画面肯定相比真实画面有一定延时。

说到了有延时,那么如何科学的评估或者测量延时到底多少呢,人的感觉其实是最不靠谱的,因为我们一般很难感知几十毫秒的差异,除非有几百毫秒以上的差异才可能可以感知到?

投屏画面延时测量工具开发

针对延时测量,首先的知道一个测量延时的数量级,这个延时其实一般都是在毫秒级别,所以测量工具开发时候就需要有一个毫秒表进行展示。
比如如下这个毫秒表:

在这里插入图片描述

这里时间就带上了毫秒数据 ,有个这个毫秒数据就可以开心的测试延时了,比如如下画面:
在这里插入图片描述

时间当然是真实画面的时间后,投屏画面的时间早,这样很简单的计算差值既可以

毫秒表如何开发?代码如下:


        ValueAnimator animator = ValueAnimator.ofInt(0,100);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                long time = System.currentTimeMillis();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
                String date = sdf.format(time);
                mTime.setText(date);
            }
        });
        animator.setDuration(2000);
        animator.setRepeatCount(-1);
        animator.start();

就是一个无限循环动画,然后每次valueanimator会触发每次的update回调时候,对当前的时间进行获取,转变成毫秒这种格式的字符串,然后进行setText既可以。

ps:这里毫秒表展示方式大家自己选着,可以是Activity,也可以是一个系统悬浮窗口(建议这种可以多场景测试延时)

分场景测量投屏延时

测量延时一般都是需要分不同场景进行,画面的刷新变化区域对延时影响也很大,大家也知道h264等视频编码都是差量进行编码,如果变化小传递数据小,如果变化大当然传递数据也大。
一般分为如下几个场景进行分开测量延时:
1、时钟秒表,或者是上面写的毫秒表,这类场景主要变化区域只有变化的时间数字,属于变化较小的情况

2、进入复杂的游戏画面,比如王者荣耀,和平精英等画面,这里需要把毫秒表变成一个悬浮窗口,然后测量延时

3、需要连续拍照或者录屏获取延时数据,取平均延时值

在这里插入图片描述

本文章更多详细代码和资料需要购买课程获取
hal+perfetto+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

私聊作者+v(androidframework007)

其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值