在Android 5.0,API 21 之前想要截图系统屏幕必须Root才能完成,5.0之后开放了接口,下面看我们是怎么实现的。
–
1. 涉及到的相关类
1.
MediaProjectionManager
官方原话: Manages the retrieval of certain types of {@link MediaProjection} tokens.
这个类通过Context#getSystemService
中MEDIA_PROJECTION_SERVICE
获取,他的功能就是获取MediaProjection
2.
MediaProjection
官方原话:A token granting applications the ability to capture screen contents and/or record system audio. The exact capabilities granted depend on the type of MediaProjection.在这个类中我们能获取到屏幕的内容
3.
ImageReader
官方原话:The ImageReader class allows direct application access to image data
rendered into a {@link android.view.Surface}
通过这个类我们可以把Surface
转换成图片
2. 上面三个类就可以完成我们截取屏幕图片的操作,那么下面我们将解释他们是怎么合作完成的
1. 首先获取用户授权,截图屏幕需要用户手动授权后才能操作
@TargetApi(Build.VERSION_CODES.