导言:
目前截屏的方法很多,root不适用,要么其他方法就是有局限性,而其中官方给出的方案最好—MediaProjection
介绍:
Android 5.0以后开放的录屏API,取视频中的一帧数据,这样就可以实现截屏
步骤:
在activity中授权,在service中完成初始化并截图,当然可以后台定时截图,但是6.0系统会有内存溢出的bug
1:build.gradle
compileSdkVersion 21
buildToolsVersion '27.0.3'
defaultConfig {
applicationId "com.aile.screenshot"
multiDexEnabled true
minSdkVersion 21
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
2:在activity中授权
public void requestCapturePermission() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return;
}
MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_MEDIA_PROJECTION:
if (resultCode == RESULT_OK && data != null) {
Service.setResultData(data);
startService(new Intent(this, Service.class));
finish();
}
break;
}
}

本文介绍了Android 5.0及更高版本中如何利用MediaProjection API来实现截屏功能。详细步骤包括在Activity中请求权限,在Service中初始化ImageReader和MediaProjection,处理横竖屏切换,并通过Bitmap转为InputStream实现截图。此外,还提到了针对6.0系统内存溢出问题的注意事项。
最低0.47元/天 解锁文章
1078





