【问题标题】:Media projection taking screenshots every second (or half a second)媒体投影每秒(或半秒)截屏
【发布时间】:2017-12-08 08:17:37
【问题描述】:

查看this 媒体投影 拍摄屏幕截图 的示例我注意到屏幕截图不规则。例如,对于连续的每个屏幕截图,它需要这么多毫秒:

174
155
149
1000
998
2014
415
1606
2859
...

我的问题是:我可以强制 onImageAvailable 每隔一定时间截屏一次吗?我需要使用媒体投影,因为我会在我的应用之外截屏。

【问题讨论】:

    标签: java android screenshot android-mediaprojection


    【解决方案1】:

    这是不规则的,因为只有在有新框架可用时才会截取屏幕截图(屏幕上的某些内容发生了变化)。据我所知,使用 Media Projection 定期截屏是不可能的。

    【讨论】:

      【解决方案2】:

      要限制截屏的频率,请在处理完图像后使用Thread.sleep

      但是,您需要执行某种触发器,以便在执行 reader.acquireLatestImage() 时始终有可用的图像。像换屏之类的东西会触发一个新的框架,但是还有其他的东西可以在不改变屏幕的情况下触发一个新的框架,例如按下主页按钮或创建一个不可见的 toast 通知(可能还有更多,但我找不到任何现在)。您可以通过将手机充电至 100%、使其处于飞行模式、关闭所有其他程序并写入 Logcat 来测试它们。

      Toast toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
      toast.getView().setBackgroundColor(Color.TRANSPARENT);
      toast.show();
      image = reader.acquireLatestImage();
      

      由于 Toast 通知无法更改其持续时间,因此上述代码仅在使用 1000 毫秒或更长时间的间隔时才能正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-09
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多