android截图

package com.chenhl.testusbconnect.utils;


/**
 * ScreenShotFb.java
 * 版权所有(C) 2014
 * 创建者:cuiran 2014-4-3 下午4:55:23
 */




import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;




import android.app.Activity;
import android.graphics.Bitmap;


import android.graphics.PixelFormat;
import android.util.DisplayMetrics;
import android.view.Display;


/**
 * FrameBuffer中获取Android屏幕截图 
 * @author cuiran
 * @version 1.0.0
 */
public class ScreenShotFb {


private static final String TAG="ScreenShotFb";

final static String FB0FILE1 = "/dev/graphics/fb0";


static File fbFile;
 //程序入口  
    public static  void shoot(){  
    try {  
    /************ 创建锁对象 ************/
           final Object lock = new Object();
           
        synchronized (lock) {
        long start=System.currentTimeMillis();
        Bitmap bitmap=getScreenShotBitmap();
            long end=System.currentTimeMillis();
            //LogUtil.i(TAG, "getScreenShotBitmap time is :"+(end-start)+" ms");
            String filePath= "/sdcard/hc.png";
//             String filePath= ConstantValue.ROOT_SDCARD_DIR+"/screens/"+System.currentTimeMillis()+".png";
            ScreenShotFb.savePic(bitmap,filePath);  
        }
         }catch (Exception e) {  
          //LogUtil.e(TAG, "Exception error",e);
         }  
    
    
    }  
//保存到sdcard  
public static void savePic(Bitmap b,String strFileName){  
        FileOutputStream fos = null;  
        try {  
            fos = new FileOutputStream(strFileName);  
            if (null != fos)  
            {  
                b.compress(Bitmap.CompressFormat.PNG, 50, fos);  
                fos.flush();  
                fos.close();  
            }  
        } catch (FileNotFoundException e) {  
//         LogUtil.e(TAG, "FileNotFoundException error",e);
        } catch (IOException e) {  
//         LogUtil.e(TAG, "IOException error",e);
        }  
        
//        LogUtil.i(TAG, "savePic success");
    }  

public static void init(Activity activity){  

try {

DisplayMetrics dm = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(dm);
screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800p)
int pixelformat = display.getPixelFormat();
PixelFormat localPixelFormat1 = new PixelFormat();
PixelFormat.getPixelFormatInfo(pixelformat, localPixelFormat1);
int deepth = localPixelFormat1.bytesPerPixel;// 位深
// LogUtil.i(TAG, "deepth="+deepth);
piex = new byte[screenHeight * screenWidth*deepth] ;// 像素
colors = new int[screenHeight * screenWidth];



}catch(Exception e){
// LogUtil.e(TAG, "Exception error",e);
}
}
static DataInputStream dStream=null;
static byte[] piex=null;
static int[] colors =null;
static int screenWidth;
static int screenHeight;
 
public static synchronized Bitmap getScreenShotBitmap() {
FileInputStream buf = null;
try {
fbFile = new File(FB0FILE1);
buf = new FileInputStream(fbFile);// 读取文件内容
dStream=new DataInputStream(buf);
dStream.readFully(piex);
dStream.close();
// 将rgb转为色值
//  for(int i=0;i<piex.length;i+=2)
//            {
//  colors[i/2]= (int)0xff000000 +
//                        (int) (((piex[i+1]) << (16))&0x00f80000)+
//                        (int) (((piex[i+1]) << 13)&0x0000e000)+
//                        (int) (((piex[i]) << 5)&0x00001A00)+
//                        (int) (((piex[i]) << 3)&0x000000f8);
//            }
 for(int i=0;i<piex.length;i+=4)
           {
 colors[i/4]= 
                       (0xff000000)|
                       (((piex[i+2]&0xff) << 16))|
                       (((piex[i+1]&0xff) << 8) )|
                       ((piex[i+0]&0xff))   ;
           }


      // 得到屏幕bitmap
return Bitmap.createBitmap(colors, screenWidth, screenHeight,
    Bitmap.Config.ARGB_8888);

} catch (FileNotFoundException e) {
// LogUtil.e(TAG, "FileNotFoundException error",e);
} catch (IOException e) {
// LogUtil.e(TAG, "IOException error",e);
}catch (Exception e) {
// LogUtil.e(TAG, "Exception error",e);
}  
finally {
if(buf!=null){
try {
buf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
  
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值