2013-05-16 148 views
1

我做了一個項目,我在其中使用android相機API。但在像(三星Galaxy S)這樣的老式Android手機上,我有惱人的問題。當我嘗試拍照時,我的應用程序凍結,幾秒鐘後出現ANR對話框。我殺了我的程序後,相機仍然被阻止,我甚至無法從系統相機應用程序使用它,只有手機重新啓動幫助我。
我收到的最新日誌消息泰德是:安卓相機frezes

QualcommCameraHardware(133): runframethread: waiting for preview thread to complete. 

在新設備上一切正常,我怎麼能解決這個問題。

回答

1

因爲它通常是答案很簡單。 後瀏覽互聯網的一段時間,我發現,去年發佈日誌消息的本地代碼:

//waiting for preview thread to complete before clearing of the buffers 
mPreviewThreadWaitLock.lock(); 
while (mPreviewThreadRunning) { 
    LOGI("runframethread: waiting for preview thread to complete."); 
    mPreviewThreadWait.wait(mPreviewThreadWaitLock); 
    LOGI("initPreview: old preview thread completed."); 
} 
mPreviewThreadWaitLock.unlock(); 

根據這個代碼,我儘量給每個呼叫前手動Camera.stopPreview();來電camera.takePicture(null, null, null, pictureCallback);和它的作品。

UPDATE
它出現在新的攝像頭驅動程序的設備因爲通常你不能用停止預覽圖片與Camera.stopPreview();不會工作,該解決方案。但我沒有使用Camera.stopPreview();,而是嘗試刪除onPreviewCallbackmCamera.setPreviewCallback(null);,它適用於我用新舊相機驅動程序測試過的所有設備!

mCamera.setPreviewCallback(null); 
camera.takePicture(null, null, null, pictureCallback);