Android 5.0之后的新API,平时很少用到这里记录下

1. 获取系统服务

        mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);if (mMediaProjectionManager != null) {startActivityForResult(mMediaProjectionManager.createScreenCaptureIntent(),200);}
复制代码

2. onActivityResult中获取MediaProjection

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 200) {mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data);}}
复制代码

3.开始录制

    private void startCapture() {mMediaProjection.createVirtualDisplay("screen-mirror",mSurfaceView.getWidth(),mSurfaceView.getHeight(),Resources.getSystem().getDisplayMetrics().densityDpi,DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,mSurfaceView.getHolder().getSurface(),null,null);}
复制代码

4.截屏

  1. 如果取余截屏的话我们要使用到ImageReader这个类,调用createVirtualDisplay:
    private void startCapture() {mImageReader = ImageReader.newInstance(mWindowWidth, mWindowHeight,PixelFormat.RGBA_8888, 2);mMediaProjection.createVirtualDisplay("screen-mirror",mWindowWidth,mWindowHeight,mScreenDensity,DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,mImageReader.getSurface(),null,null);}
复制代码
  1. 截取Bitmap
    private Bitmap screenshot() {Image image = mImageReader.acquireLatestImage();int width = image.getWidth();int height = image.getHeight();Image.Plane[] planes = image.getPlanes();ByteBuffer buffer = planes[0].getBuffer();int pixelStride = planes[0].getPixelStride();int rowStride = planes[0].getRowStride();int rowPadding = rowStride - pixelStride * widthBitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride,height, Bitmap.Config.ARGB_8888);bitmap.copyPixelsFromBuffer(buffer);bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);image.close();return bitmap;}
复制代码

Android 5.0 屏幕录制/截屏相关推荐

  1. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...

    想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...

  2. adb 获取手机屏幕内容 截屏录制视频

    adb 获取手机屏幕内容 截屏录制视频 官方文档 安装 屏幕截图获取 连接设备到adb,使用命令查看:·adb devices adb shell screencap /sdcard/screen.p ...

  3. android实现长截屏,Android实现全屏截图或长截屏功能

    本文实例为大家分享了Android实现全屏截图或长截屏功能的具体代码,供大家参考,具体内容如下 全屏截图: /** * 传入的activity是要截屏的activity */ public stati ...

  4. Android平台监听系统截屏方案预研及相关知识点

    最近有个针对系统截屏的需求,所以预研了Android平台上捕获系统截屏的方案. 最直接的方式就是监听手机的系统截屏组合键(电源键+音量下键),但是这种方式实现难度大,且有的机型使用特殊手势进行截屏,兼 ...

  5. Android之MediaProjectionManager实现手机截屏总结

    比较好的文章: Android中使用代码截图的各种方法总结 http://blog.csdn.net/woshinia/article/details/11520403 手机截屏: http://ww ...

  6. android截全屏方法,Android实现全屏截图或长截屏功能

    本文实例为大家分享了Android实现全屏截图或长截屏功能的具体代码,供大家参考,具体内容如下 全屏截图: /** * 传入的activity是要截屏的activity */ public stati ...

  7. 如何使用recordMyDesktop录制截屏视频

    开源社区管理的一个重要方面是为您的项目软件提供升级,使新用户尽可能容易地找到您的软件,理解它并将其应用于自己的用例. 许多社区领导者所吸引的方法之一是创建在线视频,这些视频以清晰,易于理解的叙述突出显 ...

  8. android分屏模式_浅谈 Android 7.0 多窗口分屏模式的实现

    从 Android 7.0 开始,Google 推出了一个名为"多窗口模式"的新功能,也就是我们常说的"分屏模式".那么,这个功能有什么用呢?作为开发者,我们又 ...

  9. Android 基于4.4系统截屏的三指截屏

    根据上一篇文章Android 4.4系统原生截图解析 ,我们知道系统截屏是调用了TakeScreenshotService,为实现在任何界面都能实现三指截屏,我们就得在PhoneWindow(fram ...

  10. android 监听屏幕是否锁屏

    今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可 ...

最新文章

  1. 混合装置实现了24/7的能量收集和储存
  2. phpStorm打开提示 failed to create JVM 的解决的方法
  3. docker desktop 镜像_Spring Boot实战工具4 - Docker
  4. potplayer设置前进后退时间-左右按键
  5. [导入]网易娱乐频道也在用风讯CMS
  6. python内存地址替换原理(20秒读懂)
  7. easyui datebox 设置只读
  8. java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
  9. 版本控制工具比较-CVS,SVN,GIT
  10. 实习成长之路:MySQL一: 一条SQL查询语句是如何执行的?
  11. css固定姓名显示长度,排列更整齐
  12. Unity Behaviors for Interception
  13. Java项目:高校教职工差旅报销管理系统(java+SSM+JSP+HTML+mysql)
  14. STM32开发小结--使用STM32F4串口的空闲中断模式+DMA接收不定长数据帧
  15. 数模(8)——排队论模型
  16. 越狱装源未能连接到服务器,科普cydia无法加载源地址插件安装错误解决方法及Cydia怎么备份shsh...
  17. 在Vue中使用video.js播放器组件(vue-video-player)
  18. 浏览器输入baidu.com之后跳转到baidu.com/?tn=92363592_hao_pg在跳转回百度解决方案
  19. PGSQL分组取最新
  20. K210模块使用简介+Win10下本地训练模型

热门文章

  1. python基础——经营第一个项目,如何将python学得更6 ?
  2. 为什么网站服务器不存在了,百度数据中有网站不存在的路径是什么原因
  3. php 5.6 mysql con,最新版的程序,支持PHP5.6和MYSQL5.6的环境吗
  4. java 线程类注入失败_如何在多线程中注入bean?!
  5. go代码--数据结构
  6. O(n^2)以及O(nlogn)时间复杂度的排序算法
  7. MyBatis_Study_003(字段名与属性名称不一致,resultMap)
  8. Java操作DB2 XML数据实践
  9. [20171120]bash使用here documents的细节
  10. AWS ec2 安装手记