【问题标题】:Adobe air ane for android - take screenshot returns black screen适用于 android 的 Adob​​e air ane - 截屏返回黑屏
【发布时间】:2018-07-21 05:30:09
【问题描述】:

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

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();

【问题讨论】:

    标签: android air adobe screenshot ane


    【解决方案1】:

    很遗憾,您无法使用此方法捕获 SurfaceView 渲染,而这正是 AIR 渲染其内容的方式。

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

    在 API 21 及更高版本上,您可以使用 MediaProjection 类通过虚拟显示器执行屏幕捕获。

    这是我们在 Image ANE 中使用的可以截取屏幕截图的方法:

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

    【讨论】:

    • 感谢您的回答,MediaProjection 效果很好。您的 com.distriqt.Image 是否可以在包含带有 HLS 视频播放的 StageVideo 层的 iOS 上捕获屏幕截图?我遇到了另一个截图问题:D stackoverflow.com/questions/48772263/…
    【解决方案2】:

    我也有同样的问题。我正在播放本地视频,但在Adobe Air Android 我需要截图(BITMAPDATA.draw(this);) 视频变黑

    【讨论】:

    • 请不要添加“我也是”作为答案。它实际上并没有提供问题的答案。如果你有一个不同但相关的问题,那么ask它(如果它有助于提供上下文,请参考这个问题)。如果你对这个特定的问题感兴趣,你可以upvote它,留下comment,或者一旦你有足够的reputation,就开始bounty
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2016-04-27
    • 2013-09-24
    • 2014-04-28
    相关资源
    最近更新 更多