捕获ScreenShots可以更快地获得更高分辨率的设备,而无需生根设备

时间:2014-04-15 07:57:55

标签: android

我正在拍摄屏幕截图,或者如果更好地说出来,我可以说我正在从我的应用程序循环中的视图绘制缓存中创建位图。

我能够以3 fps的速度拍摄三星galaxy tab 3的屏幕截图,这非常好。但是,当我在像Nexus 7这样的高分辨率设备上做同样的事情时,速度会下降到5 fps。

我担心nexus 10的级别可能会下降到2 fps,这会使我的应用程序在更大的设备上瘫痪。

任何人都可以建议我在没有设备生根的情况下提高速度吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

我使用的是view.getDrawingCache()这是一个很慢的过程。相反,我们可以使用View.draw(canvas)方法。

while (running) {
        try {
            Bitmap bitmap = Bitmap.createBitmap(width, height,
                    Bitmap.Config.RGB_565);

            v1.draw(new Canvas(bitmap));

            if (bitmap != null) {

                bitmaps.addImage(bitmap);//add to arraylist
            } 
        } catch (ArrayIndexOutOfBoundsException e) {
            System.err.println(" ArrayIndexOutOfBoundsException "
                    + e.getMessage());
        } catch (Exception e) {
            System.err.println("EXCEPTION " + e.getMessage());
        }

    }

这段代码可能抛出数组indexOutOfBound异常,所以我抓住了它。它作为魅力:)