super.onActivityResult(requestCode, resultCode, data);//首先判断请求码是否一致,结果是否okif(requestCode == REQUEST_CODE && resultCode ==RESULT_OK){//录屏请求成功,使用工具MediaProjection录屏//从发送获得的数据和结果中获取该工具mediaProjection =mediaProjectionManager.getMediaProjection(resultCode,data);//...
步骤1: 获取录屏权限 首先,我们需要获取录屏权限,这需要使用到MediaProjectionManager类。在你的Activity中添加一个按钮,并在按钮点击事件中执行以下代码: privatestaticfinalintSCREEN_RECORD_REQUEST_CODE=1;privateMediaProjectionManagermMediaProjectionManager;ButtonstartRecordButton=findViewById(R.id.start_record_button)...
Android L新增了MediaProjection录屏的api,捣鼓了大半天,照着github上的demo撸了一遍代码,梳理梳理。 录屏实现依赖MediaProjectionManager 经过 mediaProjectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE) 拿到是实例 而后建立intent,并startActivityForResultjava Intent intent=mediaProjectionMa...
.createScreenCaptureIntent() (context as Activity).startActivityForResult(intent, requestCode) } 2、创建VirtualDisplay 用户点击录屏弹窗后,会回调onActivityResult,根据resultCode和data获取mediaProjection。调用createVirtualDisplay方法来创建虚拟显示,示例代码如下: fun createVirtualDisplay(surface: Surface) { virtualDi...
说明: 此MediaProjection 录屏和编码实操主要针对Android12.0系统。通过MediaProjection获取屏幕数据,将数据通过mediacodec编码输出H264码流(使用ffmpeg播放),存储到sd卡上。 1 MediaProjection录屏与编码简介 这里主要是使用MediaProjection获取屏幕数据,将数据通过mediacodec编码输出到存储卡上。这里主要介绍 MediaProjection的基本原...
MediaProjection是Android5.0后才开放的屏幕采集接口,通过系统级服务MediaProjectionManager进行管理。 录屏过程可以分成两个部分,即通过MediaProjectionManage申请录屏权限,用户允许后开始录制屏幕;然后通过MediaRecorder对音视频数据进行处理。 获取MediaProjectionManager实例 ...
MediaProjectionManager.getMediaProjection(resultCode,clonedIntent)第一次录屏没有问题,但我无法第二次录屏 。需要重新启动才可以录制 通过上网查找得知: 1、Intent数据是不能重用的,解决方案也很简单,就是使用完媒体投影后不要关闭即可。 2、因此:停止录屏的时候不可以调用 MediaProjection.stop。我们可以在退出Service...
MediaProjection android在5.0系统之前,是没有开放视频录制的接口的,如果要录制视频,必须要先root。 在5.0,Google终于开放了视频录制的接口(其实严格来说,是屏幕采集的接口),也就是MediaProjection和MediaProjectionManager。 首先来说MediaProjectionManager,它是一个系统级的服务,类似WindowManager,AlarmManager等,你可以通过get...
android:foregroundServiceType="mediaProjection"/> 二、构造Surface 1.如果屏幕采集数据用来录制视频,那么消费者可以是 MediaRecoder,相应地 Surface 由 MediaRecoder 提供: Surface surface = mediaRecorder.getSurface(); 2.如果屏幕采集数据用来屏幕共享(录屏直播),那么消费者可以是类似 MediaCodec 这样的编码器,相应地...
MediaProjection是一个5.0之后给开发者提供的新的截屏或者录屏的新手段。MediaProjection可以用来捕捉屏幕 这里我们主要用到的一个方法是 publicVirtualDisplaycreateVirtualDisplay(Stringname,intwidth,intheight,intdpi,intflags,Surfacesurface,android.hardware.display.VirtualDisplay.Callbackcallback,Handlerhandler){thrownew...