看一下这的媒体投影拍摄截图的例子,我注意到截屏并不常见。例如,对于一行中的每个屏幕快照,它花费了这么多毫秒:
174
155
149
1000
998
2014
415
1606
2859
...我的问题是:我能强迫onImageAvailable每隔一段时间拍摄截图吗?我需要使用媒体投影,因为我将在我的应用程序之外的屏幕快照。
发布于 2018-02-13 15:52:10
这是不正常的,因为只有当一个新的框架可用时才会截取屏幕快照(屏幕上的某些内容已经改变)。据我所知,不可能定期使用媒体投影拍摄截图。
发布于 2018-04-14 02:23:11
为了限制截图的拍摄频率,在处理图像后使用Thread.sleep。
但是,您需要执行某种类型的触发器,以便在执行reader.acquireLatestImage()时始终有可用的映像。像改变屏幕这样的东西会触发一个新的框架,但是还有一些东西可以在不改变屏幕的情况下触发一个新的框架,比如按home按钮或者创建一个不可见的吐司通知(可能还有更多,但我现在找不到)。您可以通过将您的手机充电到100%,使其处于飞机模式,关闭所有其他程序,并写入Logcat来测试它们。
Toast toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
toast.getView().setBackgroundColor(Color.TRANSPARENT);
toast.show();
image = reader.acquireLatestImage();由于Toast通知不能更改其持续时间,所以上面的代码只能使用1000 ms或更长的间隔才能很好地工作。
https://stackoverflow.com/questions/47710256
复制相似问题