首页 > 编程知识 正文

Android录屏代码,Android录屏区域

时间:2023-05-03 23:44:02 阅读:265434 作者:659

1、先获取 MediaProjectionManager

projectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);

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

Intent captureIntent = projectionManager.createScreenCaptureIntent();

startActivityForResult(captureIntent, RECORD_REQUEST_CODE);

3、 获取 MediaProjection

@Overrideprotected 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+ 屏幕录制

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。