Adobe Air Ane用于屏幕截图返回黑屏



i制作ANE,制作应用程序的屏幕截图。但是我总是得到黑色矩形。

public class TakeScreenshot implements FREFunction {
    @Override
    public FREObject call(FREContext context, FREObject[] args) {
        try {
            View view = context.getActivity().getWindow().getDecorView().getRootView();
            view.setDrawingCacheEnabled(true);
            Bitmap cachedBitmap = Bitmap.createBitmap(view.getDrawingCache());
            Bitmap bitmap = cachedBitmap.copy(cachedBitmap.getConfig(), false);
            FREBitmapData bmd = (FREBitmapData)args[0];
            bmd.acquire();
            bitmap.copyPixelsToBuffer(bmd.getBits());
            bmd.release();
            bmd.invalidateRect(0,0, bitmap.getWidth(), bitmap.getHeight());
            return bmd;
        } catch (FREWrongThreadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

猜猜,问题在于从frecontext正确视图。已经尝试了不同的方法以相同的结果:

View view = context.getActivity().getWindow().getDecorView();
View view = context.getActivity().findViewById(android.R.id.content);
View view = context.getActivity().findViewById(android.R.id.content).getRootView();

不幸的是,您无法使用此方法捕获SurfaceView渲染器,这是空气呈现其内容的方式。

SurfaceView的始终将使用图形缓存呈现为黑色/空内容。它们包含2个零件,一个占位符的视图和渲染表面。图形缓存方法仅捕获空的视图部分。

在API 21及更高版本上,您可以使用Mediaprocodment类使用虚拟显示器执行屏幕包。

这是我们在图像ANE中使用的方法,可以捕获屏幕截图:

https://airnativeextensions.com/extension/com.distriqt.image

我有同样的问题。我正在播放本地视频,但是在Adobe Air Android中,我需要进行屏幕截图(BITMAPDATA.draw(this);)视频变成黑色

最新更新