title: extra padding while taking screenshot using MediaProjection API
body: <p>I am using the following code to obtain a screenshot. I get the screenshot but there is black padding attached to the image. The code samples found on the internet to take screenshot and to remove padding are used here:</p>
  
  <pre><code>// requesting permission
          MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(
              Context.MEDIA_PROJECTION_SERVICE);
      startActivityForResult(projectionManager.createScreenCaptureIntent(), REQUEST_SCREENSHOT);
  
  
  // requesting screenshot on successful permission (in onActivityResult)
      if (requestCode == REQUEST_SCREENSHOT &amp;&amp; resultCode == RESULT_OK) {
  
          MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
          final MediaProjection mProjection = projectionManager.getMediaProjection(resultCode, data);
  
  
          Display mDisplay = getWindowManager().getDefaultDisplay();
  
          Point size = new Point();
          mDisplay.getSize(size);
  
          final int width = size.x;
          final int height = size.y;
  
  
          final ImageReader mImageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
          mProjection.createVirtualDisplay("screen-mirror", width, height,
                  getResources().getDisplayMetrics().densityDpi,
                  DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY |
                          DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC, mImageReader.getSurface(),
                  null, null);
  
  
          mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
              @Override
              public void onImageAvailable(ImageReader imageReader) {
  
                  final Image image = imageReader.acquireLatestImage();
  
                  if (image != null) {
                      mImageReader.setOnImageAvailableListener(null, null);
                      mProjection.stop();
  
                      final Image.Plane[] planes = image.getPlanes();
                      final ByteBuffer buffer = planes[0].getBuffer();
                      int pixelStride = planes[0].getPixelStride();
                      int rowStride = planes[0].getRowStride();
                      int rowPadding = rowStride - pixelStride * width;
  
                      // create bitmap
                      Bitmap bmp = Bitmap.createBitmap(
                              width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
                      bmp.copyPixelsFromBuffer(buffer);
                      image.close();
  
                      ImageView iv = findViewById(R.id.iv);
                      iv.setImageBitmap(bmp);
                  }
              }
          }, null);
  
  
      }
  </code></pre>
  
  <p>Here is a screenshot showing what I am getting. I am loading the bitmap into an ImageView within my Activity.
  <a href="https://i.stack.imgur.com/Ti3E6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ti3E6.png" alt="enter image description here"></a></p>