android 截屏
找了一下午关于 android 截屏的资料,蛋疼
截取当前 Activity View, 关键代码
Viewview=activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmapbitmap=view.getDrawingCache();
尝试将对应的 activity 主题换成透明的,发现截取不到肉眼看到的整个屏幕的部分,只有透明部分,个人感觉实用性不是太好
2.framebuffer 方式
文件位置 /dev/graphics/fb0
反正我是 打开不了这个文件 报的open failed: EACCES (Permission denied),
无奈还是 需要 root
Runtime.getRuntime().exec(newString[]{"su","chmod777/dev/graphics/fb0"});
网上参考代码挺多
InputStreamstream=newFileInputStream(file);DataInputStreamdStream=newDataInputStream(stream);dStream.readFully(piex)
执行到 readFully(piex) 就报 java.io.EOFException,尝试了几次 一样的结果,放弃了
3.调用系统 bin方法(不过这个机器也是需要root的)
网上一搜直接出来这个: http://stackoverflow.com/questions/8779700/screenshot-from-background-service-of-another-application-programmatically
简单贴下代码
Processprocess=Runtime.getRuntime().exec("su");OutputStreamos=process.getOutputStream();os.write(("/system/bin/screencap-p"+"/sdcard/img.png").getBytes("ASCII"));os.flush();os.close();process.waitFor();bitmap=BitmapFactory.decodeStream(newFileInputStream(newFile("/sdcard/img.png")));
4.asl 说明是enables to programmatically capture screenshots from Android devices without requirement of having root access privileges
眼前一亮,立刻下了个 资源文件
进到 run.sh 文件一看,发现这段$adb push ./asl-native /data/local/asl-native ,md 这不是又需要 root的嘛
没关系,继续adb shell /data/local/asl-native /data/local/asl-native.log 这一句的时候 就报了如下异常了
/system/bin/sh: /data/local/asl-native: not executable: magic 7F45 ,找了很久资料,未果 懒人果断放弃了
(有兴趣的同学可以研究下,解决了发个博客科普下呗,项目地址 https://code.google.com/p/android-screenshot-library/)
android screenshot background without root 貌似还没有一个好的解决方案
看了一天,水平有限 感觉就是第三种能勉强用用了 ,一天就这么过了 哎~
更多相关文章
- CreateProcess error = 2,系统找不到指定的文件
- Android 文件管理器 Android文件管理器源代码
- googleMap----放大,缩小,东南西北,四种视图切换代码
- 转:善用Android预定义样式来为我们的布局设置效果,大大节约代码量
- Android创建隐藏文件或者文件夹
- Android中的File文件存储及读取file中的Bitmap
- 在EeePC上运行Android!(转)(也是代码下载配置编译的流程!)
- Android利用drawable文件夹自定义控件背景、样式
- Android改变文件的权限