android通过读取/dev/graphics/fb0文件解析出系统界面的图片
2013-07-25 08:37
561 查看
在网上找了一些读取/dev/graphics/fb0文件的办法并解析出图片的办法。大部分都是比较笼统一点的,经过一些网上示例和研究,找到个比较简单的办法读取解析数据
当然目前读取系统文件还是需要先将机器进行root后才能读取,具体怎么root,有很多种办法和工具的
root完成后,先通过代码将/dev/graphics/fb0文件修改为可读的权限
ShellUtil.getInstance().rootCommand(
"chmod 777 /dev/graphics/fb0\n");
修改完成后,直接通过java代码就可以读取文件内容了
FileInputStream buf = new FileInputStream(new File("/dev/graphics/fb0"));// 读取文件内容
读取文件数据后,就可以在数据中提取图片rgb,转换成可视的图片,具体代码如下:
DisplayMetrics dm = new DisplayMetrics();
Display display = getWindowManager().getDefaultDisplay();
display.getMetrics(dm);
int screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px)
int screenHeight = dm.heightPixels; // 屏幕高(像素,如:800p)
int pixelformat = display.getPixelFormat();
PixelFormat localPixelFormat1 = new PixelFormat();
PixelFormat.getPixelFormatInfo(pixelformat, localPixelFormat1);
int deepth = localPixelFormat1.bytesPerPixel;// 位深
byte[] piex = new byte[screenHeight * screenWidth * deepth];// 像素
DataInputStream dStream = new DataInputStream(buf);
dStream.readFully(piex);
int[] colors = new int[screenHeight * screenWidth];
// 将rgb转为色值
for (int m = 0; m < colors.length; m++) {
int b = (piex[m * 4] & 0xFF);
int g = (piex[m * 4 + 1] & 0xFF);
int r = (piex[m * 4 + 2] & 0xFF);
int a = (piex[m * 4 + 3] & 0xFF);
colors[m] = (a << 24) + (r << 16) + (g << 8) + b;
}
// 得到屏幕bitmap
return Bitmap.createBitmap(colors, screenWidth, screenHeight,
Bitmap.Config.ARGB_4444);
代码比较多,如需下载完整项目示例的,下载这个地址
http://download.csdn.net/detail/wuchao5555/5678367
当然目前读取系统文件还是需要先将机器进行root后才能读取,具体怎么root,有很多种办法和工具的
root完成后,先通过代码将/dev/graphics/fb0文件修改为可读的权限
ShellUtil.getInstance().rootCommand(
"chmod 777 /dev/graphics/fb0\n");
修改完成后,直接通过java代码就可以读取文件内容了
FileInputStream buf = new FileInputStream(new File("/dev/graphics/fb0"));// 读取文件内容
读取文件数据后,就可以在数据中提取图片rgb,转换成可视的图片,具体代码如下:
DisplayMetrics dm = new DisplayMetrics();
Display display = getWindowManager().getDefaultDisplay();
display.getMetrics(dm);
int screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px)
int screenHeight = dm.heightPixels; // 屏幕高(像素,如:800p)
int pixelformat = display.getPixelFormat();
PixelFormat localPixelFormat1 = new PixelFormat();
PixelFormat.getPixelFormatInfo(pixelformat, localPixelFormat1);
int deepth = localPixelFormat1.bytesPerPixel;// 位深
byte[] piex = new byte[screenHeight * screenWidth * deepth];// 像素
DataInputStream dStream = new DataInputStream(buf);
dStream.readFully(piex);
int[] colors = new int[screenHeight * screenWidth];
// 将rgb转为色值
for (int m = 0; m < colors.length; m++) {
int b = (piex[m * 4] & 0xFF);
int g = (piex[m * 4 + 1] & 0xFF);
int r = (piex[m * 4 + 2] & 0xFF);
int a = (piex[m * 4 + 3] & 0xFF);
colors[m] = (a << 24) + (r << 16) + (g << 8) + b;
}
// 得到屏幕bitmap
return Bitmap.createBitmap(colors, screenWidth, screenHeight,
Bitmap.Config.ARGB_4444);
代码比较多,如需下载完整项目示例的,下载这个地址
http://download.csdn.net/detail/wuchao5555/5678367
相关文章推荐
- android通过系统调用图片文件的Uri转换为绝对文件路径
- Android 调用系统相机拍照(适配7.0)、从图库选择图片、从数据库读取联系人信息、相册图片、扫描文件
- Android 获取手机系统图片、拍照图片时回调后通过URI解析路径的方法,比较全面!!!!
- Android通过文件类型打开系统已有支持程序开启
- android系统通过图片绝对路径获取URI的三种方法
- ubuntu13.10编译android文件系统4.0.4错误全部解析
- Android 调用系统文件浏览器 添加图片
- Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)
- Android-adb shell 读取手机系统文件
- Android中通过Exifinterface读取图片地理位置信息
- android系统通过图片绝对路径获取URI的三种方法
- Android开发之Pull解析读取和生成XML文件
- Android 通过HTTP POST 上传图片文件
- Android 通过HTTP POST 上传图片文件
- 解析Android资源文件及他们的读取方法详解
- android 直接从配置文件中读取图片
- Android中通过Intent 调用系统的图片、视频、音频、录音、拍照
- Android通过URL读取网络图片
- android 7.0以上共享文件(解决调用系统照相和图片剪切出现的FileUriExposedException崩溃问题)
- android中pull解析,读取xml中的实体类(通过xml发送实体类)