android录屏

1、先获取 MediaProjectionManager

projectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);

2、创建Intent 启动Intent (startActivityForResult使用有回调的)

Intent captureIntent = projectionManager.createScreenCaptureIntent();

startActivityForResult(captureIntent, RECORD_REQUEST_CODE);

3、 获取 MediaProjection

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == RECORD_REQUEST_CODE && resultCode == RESULT_OK) {
    mediaProjection = projectionManager.getMediaProjection(resultCode, data);

   }
}

4、 MediaRecorder 的初始化工作  使用MediaRecorder进行视频录制存储

mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
String rootDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "ScreenRecord" + "/";

mediaRecorder.setOutputFile(rootDir  + System.currentTimeMillis() + ".mp4");
mediaRecorder.setVideoSize(width, height);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024);
mediaRecorder.setVideoFrameRate(30);
try {
  mediaRecorder.prepare();
} catch (IOException e) {
  e.printStackTrace();
}

5、设置VirtualDisplay 将图像和展示的View关联起来。一般来说我们会将图像展示到SurfaceView,MediaRecorder 已经内置了SurfaceView。 

virtualDisplay = mediaProjection.createVirtualDisplay("MainScreen", width, height, dpi,
    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mediaRecorder.getSurface(), null, null);

6、结束录制,释放资源

mediaRecorder.stop();
mediaRecorder.reset();
virtualDisplay.release();
mediaProjection.stop();

参考 : GitHub - glt/ScreenRecorder: Android 5.0+ 屏幕录制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值