Android ImageReader aquireLatestImage偶尔为null

时间:2017-11-01 02:42:10

标签: android

我有一个能够捕获屏幕内容的应用设置。但是,有时,我会从aquireLatestImage返回null值。该文档称,如果没有可用的图像数据,它将返回“null”。

我很想知道哪些图片数据不可用?

编辑:据我所知,这种情况最常发生在LG设备上......

编辑2:我遇到的情况是在先前返回有效图像值之后返回的空值。并继续返回空值。对于非LG设备,偶尔会返回空值。对于LG设备,似乎一旦它返回一个空值,其余的将为空。

编辑3:包含一些代码

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

Display display = wm.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics );

ImageReader imageReader = ImageReader.newInstance(displayMetrics.widthPixels, displayMetrics.heightPixels, PixelFormat.RGBA_8888, 2);

virtualDisplay = mediaProjection.createVirtualDisplay("NetCountableVirtualDisplay",
        displayMetrics.widthPixels,
        displayMetrics.heightPixels,
        displayMetrics.densityDpi,
        DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC,
        imageReader.getSurface(),
        null,
        null);

1 个答案:

答案 0 :(得分:0)

文档说"如果没有图像可用,则返回null" 这意味着您在能够获取新图像之前调用它,因此不会浪费资源向您发送两次相同的图像,而是返回null。