Android实现全局截图以及录屏

本文介绍了如何在Android 5.0及以上版本使用mediaProjection API实现全局截图和录屏功能。通过详细代码示例(Kotlin编写,与Java类似),展示了如何捕获屏幕并处理截图,同时提到了录屏所需的权限,包括WRITE_EXTERNAL_STORAGE和RECORD_AUDIO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说 直接上代码(使用kotlin编写大致与java差不多) 代码注释也挺详细的

利用mediaProjection 实现截屏与录屏
mediaProjection 是android 5.0 加入的一个 主要用户捕捉屏幕的东西

createVirtualDisplay(String name, int width, int height, int dpi, int flags, Surface surface, VirtualDisplay.Callback callback, Handler handler)
//创建一个VirtualDisplay捕获屏幕的内容。
//捕捉到的内容将写入到传入的surface中
//因此可将传入MediaRecorder以及ImageReader中的surface 并 通过他们取出surface进行截图与录制
class ScreenCapture constructor(private val width : Int ,private  val height : Int ){

    private var mImageReader : ImageReader = ImageReader.newInstance(width,height, PixelFormat.RGBA_8888,3)
    private var mediaProjectionManager = App.app.mediaProjectionManager

    //初始化截图功能
    fun startCapture(resultCode : Int, data : Intent?) {

        val mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data)

        mediaProjection.createVirtualDisplay("capture",width,height,1,
                DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC,
                mImageReader.surface,null,null)

    }

    fun acquire() : Bitmap?{
        var image: Image? = null

        //当未开始录制的时候先调用此方法会报错
        //java.lang.IllegalStateException: mImageReader.acquireLatestImage() must not be null
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值