Android软件应用经常要求实现截屏和录屏的功能,那么如何实现Android软件截屏和录屏功能呢?本文将介绍基于MediaProjection实现Android移动手机截屏和录屏功能。

MediaProjection可以用来捕捉屏幕,具体来说可以截取当前屏幕和录制屏幕视频。MediaProjection由MediaProjectionManager来管理和获取,具体使用步骤如下:

代码功能

首先,获取MediaProjectionManager,和其它的Manager一样通过Context.getSystemService()传入参数MEDIA_PROJECTION_SERVICE获得实例。

接着,调用MediaProjectionManager.createScreenCaptureIntent()弹出dialog询问用户是否授权应用捕捉屏幕,同时覆盖onActivityResult()获取授权结果。

如果授权成功,通过MediaProjectionManager.getMediaProjection(int resultCode,Intent resultData)获取MediaProjection实例,通过MediaProjection.createVirtualDisplay(String name,int width,int height,int dpi,int flags,Surface surface,VirtualDisplay.Callback callback,Handler handler)创建VirtualDisplay实例。实际上在上述方法中传入的surface参数,是真正用来截屏或者录屏的。

截屏使用ImageReader类,这个类的getSurface()方法获取到surface直接传入MediaProjection.createVirtualDisplay()方法中,此时就可以执行截取。通过ImageReader.acquireLatestImage()方法即可获取当前屏幕的Image,经过简单处理之后即可保存为Bitmap。

录屏需要用到MediaCodec,这个类将原始的屏幕数据编码,在通过MediaMuxer封装成MP4格式保存。MediaCodec.createInputSurface()获取一个surface对象传入MediaProjection.createVirtualDisplay()即可获取屏幕原始多媒体数据,之后读取MediaCodec编码输出数据经过MediaMuxer封装处理MP4即可播放,实现录屏。

android 实现手机录屏功能,基于MediaProjection实现Android移动手机截屏和录屏功能相关推荐

  1. android图表控件 坐标,android-charts 基于Java和Android开发的图形图表控件 | 李大仁博客...

    王晓龙 April 8th, 2014 at 09:44 | #1 我再github上看到了你写的控件,给了我很大启发,我现在在做K线图一类的图表,正好用到了您开发的这款控件,但是有些地方使用的不太舒 ...

  2. 基于java的网上手机销售系统_基于SSH实现的网上手机销售系统+论文

    简介: 项目简介网上手机销售系统主要实现以下功能.本系统模块如下: 1,前台系统功能模块|--商品的展示模块              |--新品上架         &nb 项目简介 网上手 ...

  3. Android应用程序获得root权限 基于NVidia平台Android应用修改cpu频率

    问题和目标       有时候希望在java应用程序中来使用root权限,如修改/system权限,亦或者如题. 思路和原理       这里介绍2种我已经实现的方法,但是建议使用第2种,因为第2种适 ...

  4. Java毕业设计_基于JAVAWeb和Android的随堂练习软件

    基于JAVAWeb和Android的随堂练习软件 基于JAVAWeb和Android的随堂练习软件mysql数据库创建语句 基于JAVAWeb和Android的随堂练习软件oracle数据库创建语句 ...

  5. 【Android】录屏功能实现——MediaProjection

    目录 Android录屏功能实现-MediaProjection 概述 工具类 作用 过程 权限申请 连接服务 开始录制 停止录制 总结 不积跬步,无以至千里:不积小流,无以成江海.要沉下心来,诗和远 ...

  6. android11beta支持什么手机,Android 11 Beta1发布,新增多种功能,网友:Android基于 Flyme...

    原标题:Android 11 Beta1发布,新增多种功能,网友:Android基于 Flyme 6.11日消息,谷歌于今日凌晨正式推送了 Android 11 Beta 1 版系统,不仅新增了可悬浮 ...

  7. android区域截图app,截图 + 录屏,这个 App 满足你对手机截屏的所有需求 - Screenshot touch #Android...

    作者:周杰腾现在用手机截屏基本都要用「关机 + 音量键」这种组合按钮,又或者用状态栏上的快捷方式.在大屏手机当道的现在,单手操作略显麻烦.最近 AppSo(微信公众号 AppSo)就发现了 Scree ...

  8. iphone11录屏功能在哪里,告诉你手机录屏位置

    自从iphone11发布以后,很多用户已经陆陆续续购买了iphone11,但是在使用的过程中有很多用户都存在疑惑,那么iphone11录屏功能在哪里设置呢?为什么控制中心没有录屏功能?下面就为大家带来 ...

  9. 安卓10自带录屏_谷歌终于在Android 11版里原生支持屏幕录像功能(即录屏)和长截图功能...

    在谷歌面向开发者们推出 Android 11 开发者预览版后,关于新版本的越来越多的新增功能正在被逐渐发掘出来. 例如最新被发掘出来的新功能是谷歌终于添加所有用户期待已久的屏幕录像功能,同时还支持进行 ...

最新文章

  1. 使用 Firefox攻击Web2.0应用(一)
  2. python常见函数
  3. c++ cuda拷贝内存
  4. 多态部分作业 1.按要求编写Java程序:(1)编写一个接口:InterfaceA,只含有一个方法int method(int n);
  5. BugkuCTF-PWN题pwn5-overflow2超详细讲解
  6. C#面向对象名词比较
  7. 新电脑怎么分盘_电脑如何分盘及删除与合并04
  8. ​苏宁回应股权质押给淘宝:正常合作;苹果App Store被越狱商店指控垄断;Docker 20.10.0发布|极客日报...
  9. mysql触发器delimiter_MySQL的触发器创建之注意事项(有关delimiter)
  10. 读取properties配置文件的方法
  11. 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
  12. Atitit 云计算体系树.docx Atitit 云计算之道 attilax著 艾龙 著 serverless bomb 1. 什么才是云计算的根本特征.. 2 2. 云计算体系 2 3. “云
  13. gliffy confluen插件gliffy-confluence-plugin-5.1.ja破解
  14. ffmpeg之H265解码
  15. confirm() 中写html,confirm用法 Confirm……that……
  16. Cocos2dx3.2学习准备(一):C++11新特性
  17. Table ‘./zy@002diot/zy_sys_logs‘ is marked as crashed and should be repaired 报错
  18. 学科实践活动感悟50字_初中学科实践活动50字
  19. NSIS教程(9): NSIS+duilib仿QQ安装包
  20. Ultimaker 2:整体性能出众的家用3D打印机

热门文章

  1. 10个优质的基于Node.js的CMS 内容管理平台
  2. 听说你还在用dp做屏幕适配?
  3. python栈和队列
  4. Directshow 捕捉视频入门篇
  5. pythonwx功能_wx python 基本控件
  6. 信号完整性研究:什么是地弹
  7. WF4.0实战(十):分布式酒店订房系统
  8. Transcad学习——矩阵合并
  9. 【软件测试】禅道的简要介绍
  10. 手机数据恢复软件该如何使用