查看媒体投影的this示例屏幕截图我注意到屏幕截图不常规。例如,对于连续的每个屏幕截图,花费了这么多毫秒:
174
155
149
1000
998
2014
415
1606
2859
...
我的问题是:我可以强制 onImageAvailable 每隔一段时间截取屏幕截图吗?我需要使用媒体投影,因为我会在我的应用程序之外截图。
答案 0 :(得分:0)
这不常见,因为仅当新框架可用时才会拍摄屏幕截图(屏幕上已更改某些内容)。据我所知,不可能使用Media Projection定期截取屏幕截图。
答案 1 :(得分:0)
要限制截图的使用频率,请在处理完图像后使用Thread.sleep
。
但是,您需要执行某种触发器,以便在执行reader.acquireLatestImage()
时始终有可用的图像。像屏幕更改之类的东西会触发一个新的框架,但还有其他东西可以在不改变屏幕的情况下触发新框架,例如按下主页按钮或创建一个不可见的吐司通知(可能有更多,但我可以&#t; t现在找到任何一个)。您可以通过将手机充电至100%,将其置于飞行模式,关闭所有其他程序以及写入Logcat来测试它们。
Toast toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
toast.getView().setBackgroundColor(Color.TRANSPARENT);
toast.show();
image = reader.acquireLatestImage();
由于Toast通知如何更改其持续时间,上述代码仅适用于1000 ms或更长的间隔。