最近做一个截屏的功能就直接在网上查找的截屏代码,发现截出来的图不对,APP里是有视频画面的,截出来的图片视频窗口是黑色的。网上大多都是通过 getWindow().getDecorView();来截图但是这种对视频流并不行。后来我用MediaProjectionManager.createScreenCaptureIntent()获取Intent,然后再通过startActivityForResult传入Intent然后在onActivityResult中通过MediaProjectionManager.getMediaProjection(resultCode,data)获取MediaProjection。创建ImageReader,构建VirtualDisplay,最后就是通过ImageReader截图,就可以从ImageReader里获得Image对象转换成bitmap再进行存储。
public class MainActivity extends AppCompatActivity {
private static final int SCREEN_SHOT = 0;
private static final String TAG = "TAG";
MediaProjection mediaProjection;
MediaProjectionManager projectionManager;
VirtualDisplay virtualDisplay;
int mResultCode;
Intent mData;
ImageReader imageReader;
int width;
int height;
int dpi;
Bitmap bitmap;
ImageView imageView;
@Overr