截获android屏幕服务,如何捕获android设备屏幕内容?
使用以下代码:Bitmap bitmap;View v1 = MyView.getRootView();v1.setDrawingCacheEnabled(true);bitmap = Bitmap.createBitmap(v1.getDrawingCache());v1.setDrawingCacheEnabled(false);
这MyView是View我们需要在屏幕中包含的内容。你也可以DrawingCache通过View这种方式获得(没有getRootView())。
还有另一种方式..
如果我们ScrollView以root身份查看,那么最好使用以下代码,LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);FrameLayout root = (FrameLayout) inflater.inflate(R.layout.activity_main, null); // activity_main is UI(xml) file we used in our Activity class. FrameLayout is root view of my UI(xml) file.root.setDrawingCacheEnabled(true);Bitmap bitmap = getBitmapFromView(this.getWindow().findViewById(R.id.frameLayout)); // here give id of our root layout (here its my FrameLayout's id)root.setDrawingCacheEnabled(false);
这是getBitmapFromView()方法public static Bitmap getBitmapFromView(View view) {
//Define a bitmap with the same size as the view
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
//Bind a canvas to it
Canvas canvas = new Canvas(returnedBitmap);
//Get the view's background
Drawable bgDrawable =view.getBackground();
if (bgDrawable!=null)
//has background drawable, then draw it on the canvas
bgDrawable.draw(canvas);
else
//does not have background drawable, then draw white background on the canvas
canvas.drawColor(Color.WHITE);
// draw the view on the canvas
view.draw(canvas);
//return the bitmap
return returnedBitmap;
}
它将显示整个屏幕,包括隐藏在ScrollView
还有另一种更好的截屏方式。
我在这里截了屏幕截图WebView。WebView w = new WebView(this);
w.setWebViewClient(new WebViewClient()
{
public void onPageFinished(final WebView webView, String url) {
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
webView.measure(View.MeasureSpec.makeMeasureSpec(
View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(),
webView.getMeasuredHeight());
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
int height = bitmap.getHeight();
canvas.drawBitmap(bitmap, 0, height, paint);
webView.draw(canvas);
if (bitmap != null) {
try {
String filePath = Environment.getExternalStorageDirectory()
.toString();
OutputStream out = null;
File file = new File(filePath, "/webviewScreenShot.png");
out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 50, out);
out.flush();
out.close();
bitmap.recycle();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}, 1000);
}
});
希望这可以帮助..!
截获android屏幕服务,如何捕获android设备屏幕内容?相关推荐
- android 定位服务和wifi,android WIFI定位和基站定位实现
android WIFI定位和基站定位实现 来源:互联网 作者:佚名 时间:2015-04-01 13:38 关于定位原理网上很多,这里就不多说了.下面说怎么实现的,直接贴代码如下:首先是Util类: ...
- 使用Android Studio设置调试的外接设备屏幕分辨率
方法总结如下: 1.点击Android Studio下方的Terminal 2.输入以下代码(这边以设置分辨率720x1920为例): adb shell wm size wm size 720x19 ...
- android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态
安卓手机 APP 开发,有的时候需要屏幕长时间亮着,也就是不锁屏,这时CPU会一直处于不休眠唤醒状态.下面介绍两种方法. 方法一:通过 PowerManager 实现. 此种方法会在软件安装时用户可以 ...
- android调服务不更新,android – OnUpdate()不调用小部件服务
我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件. 当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视 ...
- android 辅助服务 简书,Android AccessibilityService使用
测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...
- android必须服务,说说在Android如何使用服务(Service)的方法
Android 服务(Service)适合执行那些不需要和用户交互而且还要求长期运行的任务. 服务的运行不依赖于任何用户界面,即使 APP 被切换到后台,或者打开了另外一个 APP,服务仍然能够保持正 ...
- android同步服务启动失败,android – FirebaseCloudMessaging:FirebaseInstanceId后台同步失败 – SERVICE_NOT_AVAILABLE...
我已在Android中使用Firebase云消息传递(FCM)API进行推送通知.当我实现那个时间完美的工作,但现在它找不到谷歌播放的服务. 错误是: FirebaseInstanceId: back ...
- android中服务播放音乐,android中用Service播放音乐
一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐.在Android中一般用MediaPlayer类处理比较大的音频文件,用S ...
- android 定位服务源码,android gps定位app源码(GpsTracker)
[实例简介]做到了 gps 开启关闭后的提醒 以及地理位置记录(经纬度) [实例截图] [核心代码] package android.gpstracker; import android.app.Ac ...
最新文章
- istio入门(05)istio的架构概念2
- CentOS6.9中搭建FTP服务器
- unity3d技术摄像头跟随_堪比灯厂,新时代智能安全灯光技术,体验大众迈腾GTE IQ.LIGHT...
- mockito mock void方法_Spock如何模拟抽象类方法
- 对象的单数组表示(用单数组实现链表-不一样的链表实现)
- 线性代数应该这样讲(一)
- zhongdexing-pro
- python的setdefault方法
- decimal类型对象里面定义什么类型_数据库数据类型decimal理解
- 电脑公司ghost win8 64位家庭克隆版v2020.05
- PHP中使用数组转换成Json格式出现中文乱码解决方案
- MTK移植大全(参考)建议收藏!
- 计算机专业术语enabled,电脑上的BIOS设置Disabled和Enabled是什么意思?选哪个?
- linux4 系统下载,syslinux下载|
- BERYL和COMPIZ FUSION的安装与使用
- 想要制作好看的壁纸,有CorelDRAW就够啦
- 2022家博会正式开幕:国保保密科技体验馆邀您共襄盛举,共谋商机!
- debian 笔记本 准系统 RTL8822BE 8723 8192 8188 8168 8111 8107 8821-22 等PCIE 无线网卡蓝牙驱动安装
- python循环语句打印三角形_python循环输出三角形图案的例子
- 人工智能的发展前景如何?做人工智能收入高吗?
热门文章
- qMISPlat入门级使用问题解答一
- ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
- 使用docker搭建redis主从
- Linux中的vi和vim
- 我的未来计算机作文,我的未来作文(精选4篇)
- 利用pdf.js开发嵌入pdf显示,以及利用jquery-ui左右分栏显示
- C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。
- React Native之react-native bundle --platform android --dev false --entry-file index.js --bundle失败
- C和指针之字符串strchr、strpbrk、strstr
- 《零基础看得懂的C++入门教程 》——(10)面向对象