android开发之局域网内屏幕共享+提取文字01:截屏

一、理由
1、起因:因为疫情的原因,导致自己在家上网课,而学习兴趣不大,所以搞一些小玩意来提供自己的学习的兴趣和锻炼下自己,就做了up主,(有兴趣的朋友可以关注下我:算个法)。由学习通的线上考试,自己想到了一个奇妙的方法来应付学习通的线上考试,那就是用两部手机来作弊,一部作为客户端,分享屏幕,一部作为服务端,接受屏幕和提取屏幕的文字(最初可能有点作弊的想法,最后就没有了,期末还是好好复习好,这博客只是为了交流技术,不是作弊)。
2、经过:之后就网上乱找资源,最后在一位博主的指导下完成了该小玩意(博主账号:Android唐浮),最后谢谢博主的帮忙。
3、结果:
服务端
客户端
客户端有缺点,就是只能用一次,点击停止服务后会出现anr,不知道为什么,解决了朋友望告知(目测应该是我在循环中一直创造新变量的原因)
二、方法
就是客户端不断截屏,通过socket发送给服务端,服务器通过百度OCR(文字识别)获取文字。
三、截屏的实现
1、类和方法
①、获得屏幕的参数
类:WindowManager或者方法:getResources()
两者区别链接
②、得到surface(手机屏幕)类
MediaProjectionManage
MediaProjection
ImageReader (ImageReader是截屏的,如果要录屏用 MediaRecord)
VirtualDisplay
③文件的类
File、FileOutputStream、FileOutputStream
④ImageReader 中的surface转换为Bitmap类
ImageReader ,image,Bitmap
2、权限

//读写磁盘
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    //记录权限,录屏
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    //获得系统情况
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        //写其他外存
          <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  

3、步骤(详细看代码)
①初始化一个MediaProjectionManager
②创建并启动Intent
③在onActivityResult中拿到MediaProjection所需数据,并创建MediaProjection
④创建ImageReader类,为了之后接受surface
⑤创建VirtualDisplay,给ImageReader surface
⑥ImageReader装换为Bitmap
⑦Bitmap存储在文件中
4、代码问题
就是不能一直录屏,容易出现anr问题
四、源码
五、第一次做项目,发现一个学习方法
源码+官方文档(知道源码的类后去查文档)
一直做项目很累,贵在坚持
参考资料:
两个类实现Android录制屏幕功能
Android截屏、录屏工具

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值