`
fanfq
  • 浏览: 267780 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android屏幕截图

阅读更多

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.view.View;

public class ScreenShot {
	// 获取指定Activity的截屏,保存到png文件
	private static Bitmap takeScreenShot(Activity activity){
		//View是你需要截图的View
		View view = activity.getWindow().getDecorView();
    	view.setDrawingCacheEnabled(true);
    	view.buildDrawingCache();
    	Bitmap b1 = view.getDrawingCache();
    	
    	//获取状态栏高度
    	Rect frame = new Rect();  
    	activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
    	int statusBarHeight = frame.top;  
    	System.out.println(statusBarHeight);
    	
    	//获取屏幕长和高
    	int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
        int height = activity.getWindowManager().getDefaultDisplay().getHeight();  
        //去掉标题栏
        //Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
    	Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
    	view.destroyDrawingCache();
    	return b;
	}
	
	//保存到sdcard
	private static void savePic(Bitmap b,String strFileName){
    	FileOutputStream fos = null;
    	try {
			fos = new FileOutputStream(strFileName);
			if (null != fos)
			{
				b.compress(Bitmap.CompressFormat.PNG, 90, fos);
				fos.flush();
				fos.close();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//程序入口
	public static void shoot(Activity a){
		ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png");
	}
}
 
分享到:
评论
3 楼 fanfq 2014-06-04  
zzudhj 写道
是啊 !
这里得到的b1是null.


不知道为何会出现你们所说的问题,代码我以前都自己用过应该没有问题!

这篇文章写的获取截图方式有点局限性;还有一种更加高级的方式读取framebuffer设备节点。在这里我试下了我自己的手机可行的,等有空上完整的demo。

shell@android:/dev/graphics # pwd
pwd
/dev/graphics
shell@android:/dev/graphics # ls
ls
fb0
fb1
galcore
shell@android:/dev/graphics #
2 楼 zzudhj 2014-05-24  
是啊 !
这里得到的b1是null.
1 楼 linzhe321 2011-05-06  
Bitmap b1 = view.getDrawingCache(); 
这里得到的b1是null.请问是为什么呢,有什么解决办法?

相关推荐

    android屏幕截图代码

    本文将基于标题“android屏幕截图代码”以及描述中的“用于截图的各种方法 android的各种方法实现”,详细探讨几种实现屏幕截图的方法,并尽可能地扩展相关内容,以便读者能够更好地理解和掌握这些技术点。...

    android 屏幕截图功能

    ### Android屏幕截图功能详解 #### 一、概述 在Android应用开发过程中,有时我们需要实现屏幕截图的功能,例如在社交应用中分享当前界面的画面,或者在游戏应用中保存精彩瞬间等场景。本文将详细介绍如何在Android...

    Android 屏幕截图

    总的来说,Android屏幕截图可以通过`View`的绘图缓存或者`MediaProjection` API实现,其中后者提供了更全面的截图能力,但需要用户权限。在实际开发中,考虑到兼容性和用户体验,我们需要根据具体场景选择合适的方法...

    Android屏幕截图功能代码

    Android中截取屏幕截图功能代码,在android APP程序中,可以用以上代码截图。

    android 屏幕截图

    在Android平台上,屏幕截图是开发者和用户日常操作中常见的功能之一。从Android 5.0(Lollipop)开始,系统提供了更加便捷的方式来实现这一功能,不仅优化了用户体验,也使得开发者能够更容易地集成屏幕截图功能到...

    android屏幕截图发送到PC实现(PC和ANDROID均包含)

    android实现屏幕监控 1、问题 1、性能问题还未解决 2、需要手机拥有ROOT权限。 3、FRAMBUFFER数据读写的需要人为配置(/fb0中数据的... 3、电脑屏幕全屏显示,按android屏幕显示,固定大小显示(代码中修改常量值)

    Android-Andorid屏幕截图类库

    Android-Android屏幕截图类库是为了简化这一过程而设计的,它提供了一种方便、高效的方式来捕获设备屏幕的内容。在这个项目中,我们关注的是RxScreenshotDetector-master,它是一个基于ReactiveX(RxJava)的Android...

    android jni 屏幕截图 NativeScreenCapture

    本项目“android jni 屏幕截图 NativeScreenCapture”专注于利用JNI技术来实现Android设备的屏幕截图功能。下面将详细介绍这个过程涉及的关键知识点。 1. **JNI基础**:JNI是Android平台上的一个接口,它为Java应用...

    androidjava源码-Android_Screenshot:来自PC的C++android屏幕截图。通过AndroidDDMS源代码将J

    【Android_Screenshot】项目是一个基于C++实现的Android设备屏幕截图工具,它的主要目标是让开发者或用户能够从个人计算机(PC)上直接捕获Android设备的屏幕图像。这个项目利用了Android Debug Bridge (ADB) 和 ...

    Android手机屏幕截图和图片多点触摸缩放

    在Android操作系统中,屏幕截图是...总的来说,Android屏幕截图提供了方便的用户接口和API,而多点触摸缩放则是提升用户体验的关键技术之一。开发者可以通过熟练掌握这些技巧,构建出更具吸引力的图像查看或编辑应用。

    android区域性屏幕截图

    这个“android区域性屏幕截图”项目提供了解决此类需求的代码实现,已经经过测试并确认功能正常。 在Android中,获取屏幕截图通常涉及到以下几个关键知识点: 1. **获取屏幕大小**: 在Android中,我们可以通过`...

    android截取屏幕图片

    通过分析和理解这些代码,你可以更好地掌握Android屏幕截图的功能,并将其应用到自己的应用中。 总之,Android提供了一套相对简单的接口来截取屏幕图片并保存到外部存储。开发者需要理解权限管理的变化,并根据不同...

    Falcon:以Falcons的眼神拍摄Android屏幕截图!

    猎鹰眼捕捉Android屏幕截图! 屏幕快照中包括对话框,祝酒词和所有其他额外的窗口。 用法 // Saving screenshot to file Falcon . takeScreenshot(activity, file); // Take bitmap and do whatever you want ...

    Android 区域截图源码.rar

    在Android平台上,实现区域...通过阅读和理解代码,你将深入掌握Android屏幕截图的实现机制,以及如何在应用中集成自定义的截图功能。这对于开发具有类似需求的应用非常有帮助,比如教育应用、游戏、社交媒体应用等。

    一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。-Node.js开发

    一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。 Usage用法osnap [ios | android] [-f filename.png] [-d android_device_id]:red_apple:使用iOS osnap io:camera:osnap! 一个用于捕获ios /...

    Android摄像头屏幕截图工具

    在这种情况下,"Android摄像头屏幕截图工具" 提供了一种解决方案,它是一个基于DOS命令的小型应用程序,专为无显示屏Android设备设计。下面将详细介绍这个工具及其相关知识点。 首先,我们需要理解什么是DOS命令。...

    通过java实现Android截图源码

    首先,理解Android屏幕截图的基本原理。Android系统提供了SurfaceComposerClient和DisplayContent类,它们允许我们访问设备的显示内容。通过创建一个SurfaceComposerClient实例,我们可以获取到Display的引用,然后...

    Android 区域截图源码.zip源码资源下载

    在Android平台上,实现区域截图是一项常见的需求,例如用于制作教程、分享特定屏幕内容或...开发者可以通过学习这个源码,了解Android屏幕截图的实现原理,并可将其应用到自己的项目中,增强应用的功能性和用户体验。

    android 指定屏幕内区域截图

    在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...

Global site tag (gtag.js) - Google Analytics