android 的 Adobe air ane - 截图 returns 黑屏
Adobe air ane for android - take screenshot returns black screen
我正在制作一个应用程序的屏幕截图。但我总是得到黑色矩形。
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 呈现,而 AIR 就是这样呈现其内容的。
SurfaceView 将始终使用绘图缓存呈现为黑色/空白内容。它们包含 2 个部分,占位符视图和渲染表面。绘图缓存方法只捕获视图部分是空的。
在 API 21 及更高版本上,您可以使用 MediaProjection class 使用虚拟显示器执行屏幕截图。
这是我们在 Image ANE 中使用的可以截屏的方法:
https://airnativeextensions.com/extension/com.distriqt.Image
我也遇到了同样的问题。我正在播放本地视频,但在 Adobe Air Android
我需要截屏 (BITMAPDATA.draw(this);)
视频变黑了
我正在制作一个应用程序的屏幕截图。但我总是得到黑色矩形。
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 呈现,而 AIR 就是这样呈现其内容的。
SurfaceView 将始终使用绘图缓存呈现为黑色/空白内容。它们包含 2 个部分,占位符视图和渲染表面。绘图缓存方法只捕获视图部分是空的。
在 API 21 及更高版本上,您可以使用 MediaProjection class 使用虚拟显示器执行屏幕截图。
这是我们在 Image ANE 中使用的可以截屏的方法:
https://airnativeextensions.com/extension/com.distriqt.Image
我也遇到了同样的问题。我正在播放本地视频,但在 Adobe Air Android
我需要截屏 (BITMAPDATA.draw(this);)
视频变黑了