Android屏幕录制源码Demo下载

本文介绍了在Android平台上实现屏幕录制的两种方法:通过adb shell命令和使用MediaProjection API。对于adb shell命令,需要系统级权限,而在APP中可以使用Runtime.exec(cmd)调用。MediaProjection则涉及动态申请权限、启动屏幕录制服务等步骤。同时提供了屏幕录制服务的代码地址,并提及了Android截图的相关实现原理。
摘要由CSDN通过智能技术生成

Android实现屏幕录制的方式介绍两种,第一种是通过adb shell命令,还一种使用SDK的提供的方法实现.

  • adb shell 命令

语法: screenrecord [options] <filename>

Sample:
    
    adb shell screenrecord /sdcard/demo.mp4 
    开始录制(录制手机屏幕; 视频格式为mp4,存放到手机sd卡里,默认录制时间为180s)
    
    参数: --size
    adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
    指定视频分辨率大小 (指定分辨率为1280*720;不指定则默认使用手机的分辨率,为获得最佳效果,请使用设备上的高级视频编码(AVC)支持的大小)
    
    参数: --bit-rate
    adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4 
    指定视频的比特率 (指定视频的比特率为6Mbps; 如果不指定则默认为4Mbps, 你可以增加比特率以提高视频质量或为了让文件更小而降低比特率)
    
    参数: --time-limit
    adb shell screenrecord  --time-limit 10 /sdcard/demo.mp4 
    限制录制时间 (限制视频录制时间为10s; 如果不限制,默认180s)
    
    参数: --verbose
    adb shell screenrecord --time-limit 10 --verbose /sdcard/demo.mp4
    在命令行显示录屏Log如下:
    xxxx:/ # screenrecord --time-limit 10 --verbose /sdcard/demo.mp4
    Main display is 1080x2160 @60.00fps (orientation=0)
    Configuring recorder for 1080x2160 video/avc at 4.00Mbps
    Content area is 1080x2160 at offset x=0 y=0
    Time limit reached
    Encoder stopping; recorded 34 frames in 10 seconds
    Stopping encoder and muxer
    Executing: /system/bin/am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/demo.mp4
    Broadcasting: Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///sdcard/demo.mp4 }
    Broadcast completed: result=0
    
    
    参数: --bugreport
    添加额外的信息,例如时间戳覆盖,这有助于捕获用于演示错误的视频
    
    参数: --help
    查看帮助
    
    导出视频:
    adb pull /sdcard/demo.mp4

如果在APP中使用,我们可以通过Process p = Runtime.getRuntime().exec(cmd)来调用shell命令.但是只有system app才能调用,可以在manifest节点中添加android:sharedUserId="android.uid.system"拥有系统级的权限

  • 通过MediaProjection实现

1.动态申请录音和外部存储权限:

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED
            || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 10);
    }

2.获取屏幕录制的权限

    MediaProjectionMana
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值