Android5.0及以上怎么实现屏幕截图功能


这篇文章主要介绍“Android5.0及以上怎么实现屏幕截图功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android5.0及以上怎么实现屏幕截图功能”文章能帮助大家解决问题。一. 涉及到的相关类1. MediaProjectionManager官方原话: Manages the retrieval of certain types of {@link MediaProjection} tokens.
这个类通过 Context#getSystemService 中MEDIA_PROJECTION_SERVICE 获取,他的功能就是获取MediaProjection2. MediaProjection官方原话:A token granting applications the ability to capture screen contents and/or record system audio. The exact capabilities granted depend on the type of MediaProjection.在这个类中我们能获取到屏幕的内容3. ImageReader官方原话:The ImageReader class allows direct application access to image data
rendered into a {@link android.view.Surface}
通过这个类我们可以把Surface转换成图片二. 上面三个类就可以完成我们截取屏幕图片的操作,那么下面我们将解释他们是怎么合作完成的1. 首先获取用户授权,截图屏幕需要用户手动授权后才能操作这里必免费云主机域名须使用startActivityForResult 因为在createScreenCaptureIntent()方法中会返回用户授权截取屏幕的结果,用户根据下面弹窗允许或者拒绝用户选择后在Activity 的onActivityResult 中操作返回的结果data这里我是用FloatWindowsService在桌面上显示一个悬浮按钮,点击截屏,下面我们看在FloatWindowsService 是如何实现截图2. 截取屏幕内容生成Bitmap首先创建ImageReader实例然后点击事件中触发startScreenShot()startVirtual()方法中我们做一件事,就是获取当前屏幕内容与此同时需要获取MediaProjection 实例,而mResultData 是授权后返回的结果最终得到当前屏幕的内容,注意这里mImageReader.getSurface()被传入,屏幕的数据也将会在ImageReader中的Surface中最后把mImageReader得到的屏幕内容数据转换成图片,在AsyncTask中处理,Image.Plane中的 buffer 数据并不是完全是Bitmap所需要的,需要注意下面3点1. Image 设置的图片格式与Bitmap设置的必须一致2. 缓冲数据存在行间距,所以我们必须去除这些间距3. Image 使用后必须调用image.close();关闭,否则再次使用会报错最后把生成的bitmap保存起来,就ok了关于“Android5.0及以上怎么实现屏幕截图功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: vue内置组件怎么使用

这篇文章主要介绍了vue内置组件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue内置组件怎么使用文章都会有所收获,下面我们一起来看看吧。 vue组件有:1、component,用于渲染一个“元组件”为动态组件。2、tr…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 04/11 12:43
Next 04/11 12:43

相关推荐