camera ftm 測試按鍵失效

2021-06-28 13:18:43 字數 3287 閱讀 9788

一 問題描述

工廠測試camera,會出現兩種現象:

1  camera preview有顯示,但是按鍵無響應,無法拍照測試

2  camera preview黑屏,按鍵無響應

以上情況,系統都沒有死,adb log正常

二 復現路徑確認

按照正常測試手法,進入camera測試,preview取景出來,再按confirm鍵拍照,測試camera都不會出現問題,反覆試驗發現,一進入camera測試,preview取景還沒有出來,就按confirm鍵拍照,則必現按鍵無響應現象。

三 問題分析

**流程分析:

caseitem_camera_test://重新測試

break;

case item_pass: //測試通過

break;

caseitem_fail: //測試失敗

break;

while(1);

static void*camera_update_capture_tv_thread(void *priv)

//register key handle

ui_init_textview(tv,camera_cap_key_handler,(void*)cam);

camera_preview_test();//preview entry

cam->exit_thd = mfalse;

//waite key event

while (1)

key = ui_wait_key();

usleep(200000);

chkcnt--;

tv->m_khandler(key, tv->m_priv);

if (cam ->exit_thd)

break;

if (chkcnt > 0)

continue;

chkcnt = 5;

static mint32camera_preview_test()

bool bret =bsenddatatoacdk(acdk_cmd_preview_start,

(muint8*)&racdkprvconfig,

sizeof(acdk_preview_struct),

null,

0,&u4retlen);

camera_state = camera_state_preview;

static volatile intcapture_done = mfalse;

static intcamera_cap_key_handler(int key, void *priv)

switch (key)

case ui_key_confirm:

err =camera_capture_test();

if(err == 0)

capture_done =mtrue;

else

ftm_camera_dbg("capture fail\n");

exit = 1;

break;

case ui_key_back:

exit = 1;

break;

if (exit)

cam->exit_thd =mtrue;

tv->exit(tv);

static intcamera_capture_test()

gcapcbdone = mfalse;

bret = bsenddatatoacdk(acdk_cmd_capture,

(unsigned char*)&racdkcapconfig,

sizeof(acdk_capture_struct),

null,

0,&u4retlen);

//wait capture done

if(bret == mtrue)

// gcapcbdone在capture success cb置true

while(!gcapcbdone)        {

usleep(1000);

else

return 1;

問題的本質原因是camera ftm thread 呼叫acdk preview/capture是非同步的,通過發訊息給acdk module。而進入 camera_update_capture_tv_thread就註冊key handle,這時confirm key就能正常相應,然而camera preview 還要通過發訊息acdk_cmd_preview_start給acdk,返回後preview還沒有ok,因為是非同步的,但是這時confirm keyevent來,就得跑到handle的capture流程,傳送acdk_cmd_capture訊息給acdk做拍照,一直等待capture成功,但是由於preivew流程都沒有正常執行,這時capture一直不能成功執行,導致thread 死鎖,按鍵無響應。

四 修改方法

將key handle 註冊後移到camera preview ready後,camera ftm發acdk_cmd_preview_start訊息給acdk啟動preview,返回後等待1.5s 使得camerapreview取景正常。這時confirm key按下就能正常相應了。

+    pthread_mutex_lock(&camera_mutex);

camera_preview_test();

+    usleep(1500000);//2s

+    pthread_mutex_unlock(&camera_mutex);

+    ui_init_textview(tv,camera_cap_key_handler, (void*)cam );

+    tv->set_title(tv, &cam->title);

+    tv->set_text(tv, &cam->text);

+ tv->set_btn(tv,&cam->left_btn, &cam->center_btn, &cam->right_btn);

+    tv->redraw(tv);

MacBook鍵盤鎖定 按鍵失效問題

相應 重啟 的號召,我通過滑鼠控制macbook重新啟動。但發現問題仍然存在。其一 鍵盤短路 or 鍵盤壞掉了。解決方法 拿去修吧!因為我電腦重啟的時候需要輸入登入密碼,在這個時候,我測試了鍵盤上的大多數按鍵,都有反應,能進行正常輸入。所以我斷定我的鍵盤肯定沒有壞,只是被鎖定住了。於是接著往下看。其...

Linux按鍵響應測試

在linux核心中,input裝置用input dev結構體描述,使用input子系統實現輸入裝置驅動的時候,驅動的核心工作就是向系統報告按鍵 觸控螢幕 鍵盤 滑鼠等輸入事件 event,通過input event結構體描述 linux input.h 這個檔案定義了event事件的結構體,api和...

遠端桌面按鍵失效變成快捷鍵

一直在使用遠端桌面連線windows 2008作業系統,發現乙個很煩的問題,經常發現某些時間,輸入的按鍵變成了快捷鍵。如彈出 輔助功能選項 某些程式被快捷啟動 按e出現資源管理器等。又如按l鍵就直接回到登入介面要求重新登入 後來網上查了資料發現,按e會出現資源管理器,相當於e變成了win e,所以才...