使用 Androids MediaProjector 对屏幕截图的捕获进行计时
Timing the capture of screen shots using Androids MediaProjector
我已经使用 mtsahkis 的示例在 Android 上实现了一个屏幕捕获系统:https://github.com/mtsahakis/MediaProjectionDemo/blob/master/src/com/mtsahakis/mediaprojectiondemo/ScreenCaptureImageActivity.java
基本实现效果很好,但我在理解如何控制屏幕截图的创建速度时遇到问题。
我可以看到 VirtualDisplay 有一个 ImageReader 和一个 Handler,图像 reader 有一个 setOnImageAvailableListener 附加,所以大概这就是限制捕获速度的原因,在我的 Galaxy edge 上是一个不一致 1 捕捉一秒。
有没有比较有使用Handlers经验的人知道如何在线程上设置一致的时间?创建线程时会这样做吗?
// start capture handling thread
new Thread()
{
@Override
public void run()
{
Looper.prepare();
mHandler = new Handler();
Looper.loop();
}
}.start();
最佳
史蒂夫
我联系了媒体投影演示存储库的作者,他的建议是简单地让 onImageAvailable 侦听器中的线程休眠,这对我的目的来说效果很好。
Thread.sleep(mi_Delay);
我已经使用 mtsahkis 的示例在 Android 上实现了一个屏幕捕获系统:https://github.com/mtsahakis/MediaProjectionDemo/blob/master/src/com/mtsahakis/mediaprojectiondemo/ScreenCaptureImageActivity.java
基本实现效果很好,但我在理解如何控制屏幕截图的创建速度时遇到问题。
我可以看到 VirtualDisplay 有一个 ImageReader 和一个 Handler,图像 reader 有一个 setOnImageAvailableListener 附加,所以大概这就是限制捕获速度的原因,在我的 Galaxy edge 上是一个不一致 1 捕捉一秒。
有没有比较有使用Handlers经验的人知道如何在线程上设置一致的时间?创建线程时会这样做吗?
// start capture handling thread
new Thread()
{
@Override
public void run()
{
Looper.prepare();
mHandler = new Handler();
Looper.loop();
}
}.start();
最佳
史蒂夫
我联系了媒体投影演示存储库的作者,他的建议是简单地让 onImageAvailable 侦听器中的线程休眠,这对我的目的来说效果很好。
Thread.sleep(mi_Delay);