一、理由
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截屏、录屏工具

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

  1. android开发之局域网内屏幕共享+提取文字02:利用OCR提取文字

    一.问题 从图片中提取文字 二.方法 借助百度的OCR接口实现,百度OCR接口文档 原理就是提供图片所在文件给百度的OCR接口,OCR接口返回数据 三.代码 1.具体增加依赖和包,请看百度OCR接口文 ...

  2. Android开发小技巧 | 一句命令搞定截屏

    -- 简书作者 谢恩铭 转载请注明出处 一句命令搞定截屏 在安卓开发中, 我们很多时候都要用到截屏这个功能. 有时是为了演示, 有时是为了报告问题(比如在Bugzilla, Jira, Redmine ...

  3. Android 开发小技巧 | 一句命令搞定截屏

    -- 作者 谢恩铭 转载请注明出处 一句命令搞定截屏 在安卓开发中, 我们很多时候都要用到截屏这个功能. 有时是为了演示, 有时是为了报告问题(比如在Bugzilla, Jira, Redmine等B ...

  4. 使用Spacedesk实现局域网内任意设备作为电脑拓展屏

    不管你是在做学术研究还是努力工作,看论文或者多个文档的时候都会觉得多个显示屏非常的舒适.但是如果只是偶尔才会有这样的需求,再买一台显示器显然不经济划算,在人手几乎三件套(手机.平板.电脑)的情况,如何 ...

  5. Android开发——解析App启动页(Splash)黑/白闪屏现象

    前言 我在开发App的时候,出现App在启动会出现短暂的黑/白闪屏现象.这样现象对用户的体验感是会产生不好的影响,于是我就研究这个现象的起因和解决办法.不负有心人,我在翻了很多博客,踩完坑之后找到起因 ...

  6. 国产华为android手机怎么截图,华为手机有6种截屏方法,你都知道几种?

    华为手机有6种截屏方法,你都知道几种? 2019-01-12 10:45:17 0点赞 5收藏 0评论 如今手机成为了我们的伴侣,无论何时何地,手机不离身成为了我们的习惯,大家对手机也是了如指掌.华为 ...

  7. android 平板怎么截图,如何在平板电脑上截屏

    如何拍摄平板电脑的屏幕截图?为了解决这个问题,当地的宝物生活百科全书汇集了以下网友的经验,供您参考. 网友答: 我不知道您的平板电脑是什么. Android平板电脑具有用于屏幕捕获的快捷键键盘. 单击 ...

  8. Android开发之仿微信显示更多文字的View

    最近开发需求中要模仿微信朋友圈文章的展开收起功能,网上找了找,发现都有问题,于是乎自己在前辈的基础上进行了一定量的修改,下边将源码贴出来供大家参考: 1.主Activity布局文件就不粘贴了,很简单, ...

  9. android开发板局域网调试环境搭建经历

    windows 10的开发环境: 1.  pc电脑安卓 android studio ,这个教程很多: 2. 用网线连接android开发部和model ; 3.运行cmd 进入命令环境,先用命令pi ...

  10. Android开发之简单修改TabLayout默认文字大小的方法(亲测可用)

    很简单,先看图: 这是比较小的12sp 我们看下大字体28sp的 实际上很简单,给TabLayout设置一个style即可 划重点!style一定要继承TextAppearance.Design.Ta ...

最新文章

  1. FPGA之道(60)时空变换之空域优化
  2. NotePad++学习总结
  3. 《软件工程》第01章在线测试
  4. moment.js 常用(几天前、相差几天、自然周、自然月)
  5. simulink自定义信号源方法matlab数据导入sim
  6. wxWidgets:wxPlatformInfo类用法
  7. 每天一道LeetCode-----判断两个二叉树是否相同
  8. 潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园...
  9. Sh“.NET研究”arePoint开发笔记-SharePoint2010添加ASP.NET应用程序
  10. unity, Transform.TransformPoint(...)
  11. 中文排版规则_非设计师的5条排版规则
  12. JS Promise的实现原理
  13. AcWing 195. 骑士精神
  14. 序列化_SpreadJS序列化与反序列化表格Serialization+Deserialization
  15. python安装的模块在pycharm中能用吗_pycharm安装python模块
  16. 开源的Linphone SIP 电话存在栈漏洞,可远程使客户端设备崩溃
  17. UVa834 Continued Fractions【连分数】
  18. Mysql 计算经纬度距离
  19. 三维空间坐标的旋转算法详解_任意旋转角三维空间直角坐标转换的迭代算法
  20. Docker进阶实战

热门文章

  1. java编写监听器步骤_IT兄弟连 JavaWeb教程 监听器1
  2. Java后台获取Cookie
  3. React组件Input输入拼音时触发搜索的解决方案
  4. 微信清理僵尸粉系统源码
  5. Android屏幕共享权限,chrome屏幕共享权限
  6. 大牛讲堂 | 深度学习Sequence Learning技术分享
  7. 用计算机算出你的年龄,身体年龄计算器:一分钟算出你的健康年龄(全文)
  8. macOS Monterey 12.3.1 (21E258) 虚拟机 ISO 镜像
  9. 字节跳动社招Java常见面试题
  10. 电视盒子为啥不安装鸿蒙,电视盒子视频播放不了怎么办?只需三步轻松解决!...