Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试捕获屏幕时,ImageReader中的位图始终为空_Android_Bitmap_Android Image_Bytebuffer_Android Mediaprojection - Fatal编程技术网

Android 尝试捕获屏幕时,ImageReader中的位图始终为空

Android 尝试捕获屏幕时,ImageReader中的位图始终为空,android,bitmap,android-image,bytebuffer,android-mediaprojection,Android,Bitmap,Android Image,Bytebuffer,Android Mediaprojection,使用MediaProjection API进行屏幕捕获,我创建了一个ImageReader并将其用作捕获屏幕的访问点,如下所示: mImageReader=ImageReader.newInstance(mWidth,mHeight,ImageFormat.JPEG,2) 及 但生成的图像始终为空白透明图像,并且生成的位图中的所有像素都设置为#00000000:( 我已经在这上面呆了一段时间,真的需要一些帮助,所以任何建议都是受欢迎的。(我也试过这些帖子,但结果都一样-) 编辑: 我在这行中通过

使用MediaProjection API进行屏幕捕获,我创建了一个ImageReader并将其用作捕获屏幕的访问点,如下所示:

mImageReader=ImageReader.newInstance(mWidth,mHeight,ImageFormat.JPEG,2)

但生成的图像始终为空白透明图像,并且生成的位图中的所有像素都设置为#00000000:(

我已经在这上面呆了一段时间,真的需要一些帮助,所以任何建议都是受欢迎的。(我也试过这些帖子,但结果都一样-)

编辑: 我在这行中通过图像读取器表面:

DisplayMetrics metrics = getResources().getDisplayMetrics();
int density = metrics.densityDpi;
int flags = DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
mWidth = size.x;
mHeight = size.y;

mMediaProjection.createVirtualDisplay("screencap", mWidth, mHeight, density, flags, mImageReader.getSurface(), null, mHandler);

你能显示媒体投影设置吗,例如,你通过图像阅读器表面的位置?@fadden我编辑了这个问题,现在就可以显示出来了。代码实际上还可以。它可以在设备上工作,但不能在模拟器中工作。这是我生命中的8个小时,我永远不会回来。我也遇到了这个问题。代码可以在设备上工作,但不能在模拟器中工作emulator。你知道为什么以及如何让它在emulator中工作吗?另一个问题,我认为你的ImageReader使用PixelFormat.RGBA_8888,而不是ImageFormat.JPEG?位图使用Bitmap.Config.ARGB_8888,为什么你不需要转换格式?你能显示媒体投影设置,例如,你通过ImageReader曲面的位置吗?@fadden我编辑了这个问题来说明这一点,不要紧。代码实际上还可以。它可以在设备上工作,但不能在模拟器中工作。这是我生命中的8个小时,我从来没有得到回报。我也遇到了这个问题。代码可以在设备上工作,但不能在模拟器中工作。你知道为什么以及如何让它在模拟器中工作吗?另一个问题,我想你的ImageReader使用PixelFormat.RGBA_8888,但不使用ImageFormat.JPEG?而位图使用Bitmap.Config.ARGB_8888,为什么不需要转换格式?
DisplayMetrics metrics = getResources().getDisplayMetrics();
int density = metrics.densityDpi;
int flags = DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
mWidth = size.x;
mHeight = size.y;

mMediaProjection.createVirtualDisplay("screencap", mWidth, mHeight, density, flags, mImageReader.getSurface(), null, mHandler);