#.简介
Android5.0以后提供了MediaProjectionManager系统服务来获取手机屏幕画面。
需要获取相应服务的权限,然后
创建虚拟显示器,物理屏幕画面会不断被投影到虚拟现实器,输出到创建虚拟显示器时设置的Surface上。 使用过程一般会结合ImageReader或OpenGL来进行。
(在更低的版本,如Android4.4,获取屏幕画面需要通过ADB指令来进行。但目前市面上基本已经见不到比Android5.0版本还低的安卓手机)
#.基本使用流程如下
1.获取MediaProjectionManager服务实例
mProjectionManager = (MediaProjectionManager)activity
.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
2.通过MediaProjectionManager创建请求屏幕捕捉的隐式Intent,发送到目标Activity。
这时会显示一个弹窗,“xxx将开始截取您屏幕上显示的所有内容”,申请用户同意。
Intent captureIntent = mProjectionManager.createScreenCaptureIntent();
activity.startActivityForResult(captureIntent, SCREEN_CAPTURE_REQUEST_CODE);
3.在发送方Activity的onActivityResult(int requestCode, int resultCode, Intent data)处理请求结果,若用户同意了请求,就可以通过返回的结果获取MediaProjection对象执行后面的流程进行屏幕画面捕捉
MediaProjection mediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
4.通过MediaProjection创建创建虚拟显示器对象,创建后物理屏幕画面会不断地投影到虚拟显示器VirtualDisplay上