Android 讀寫fb0測試

2021-09-24 18:02:55 字數 2621 閱讀 2048

直接讀寫fb0測試

1 寫fb0

修改  system/extras/tests/framebuffer/fb_test.c

讀取格式為rgb_888的bmp,顯示到螢幕上

void draw_grid(int w, int h, void* _loc) {

int i, j;

int v;

int stride = fi.line_length / (vi.bits_per_pixel >> 3);

uint16_t *loc = _loc;

uint32_t *loc32 = _loc;

bmp_read * bmp = bmp_open("test.bmp");

if (bmp == null)

printf("bmp_open error \n");

return;

int bmpwideth = bmp->u.r8888.i.biwidth;

//the giving data

unsigned char* pos = bmp->pdata;

printf("pos[0] = %d %d %d \n", *pos, *(pos+1), *(pos+2) );

printf("data size = %d\n", bmp->datasize);

printf("data type = %d\n", bmp->tpye);

int bpp = 3;

if (bmp->tpye == ergbx_8888)

bpp = 4;

printf("bytes per pix = %d\n", bpp);

int pix = 0;

unsigned char r, g, b;

//scan each row, so loop the height first

for (j = 0; j < 700; j++)

for (i = 0; i < bmpwideth; i++)

b = *pos & 0xff;;

g = *(pos + 1) & 0xff;

r = *(pos + 2) & 0xff;

pix = r | (g << 8) | (b << 16) | (0xff << 24);

loc32[i + j*(stride)] = pix;

pos += bpp;//3

執行結果

unknown:/data/local/tmp # ./test-fb-******

vi.xres = 720

vi.yres = 1280

vi.xresv = 736

vi.yresv = 2560

vi.xoff = 0

vi.yoff = 0

vi.bits_per_pixel = 32

fi.line_length = 2944

fi.smem_len = 11304960

fi.type = 0

*****= fb_bitfield red.offset : 0

*****= fb_bitfield red.length : 8

*****= fb_bitfield red.msb_right : 0

*****= fb_bitfield green.offset : 8

*****= fb_bitfield green.length : 8

*****= fb_bitfield green.msb_right : 0

*****= fb_bitfield blue.offset : 16

*****= fb_bitfield blue.length : 8

*****= fb_bitfield blue.msb_right : 0

*****= fb_bitfield transp.offset : 24

*****= fb_bitfield transp.length : 8

*****= fb_bitfield transp.msb_right : 0

active buffer: 0

check_bmp : bmp width(500) or height(747)

check_bmp : 24 ergbx_888

bmp->header.bfoffbits = 54

bmp->datasize = 1120500

pos[0] = 25 46 78

data size = 1120500

data type = 2

active buffer: 1

active buffer: 0

unknown:/data/local/tmp #

在螢幕左上方顯示了,由於bmp的儲存格式有正常和倒置2種資料存放方式,這裡測試是倒置存放的,我們的程式是直接顯示,沒有根據h的正負值進行處理,所以 看上去倒置了,但是,我們的試驗結果已經出來了。

2 讀fb0儲存資料

早期的android中,截圖操作就是直接讀取fb0,但是,現在這樣的操作已經行不通了,因為顯示系統的設計比較複雜了,有多緩衝等機制,不再是單純的framebuffer機制,直接獲取到的可能是靜態的,也可能是混亂的。

(可以看到,獲取到的沒有狀態列 statusbar, 透明度也異常)

android 檔案讀寫

檔案的寫 android預設是放在data data 工程包名 files 檔名 第一步 取得檔案的輸出流 是檔案的模式 fileoutputstream outstream context.openfileoutput filename,context.mode private 第二步 資料寫入到...

Android 讀寫Excel檔案

android 讀寫 excel 檔案 需求背景 最近在做專案過程中,需要讀取 excel 檔案,excel檔案可以來自使用者插在android裝置上的外接u盤,也可以是儲存在專案assets raw裡面。資料參考 查閱了很多相關資料,讀取外接u盤主要用到了android 讀取usb檔案的第三方開源...

android 檔案讀寫操作

android檔案操作 test in main string filename data data com.example.fileoperation files test.txt string str this is for test string readfiledata filename w...