因爲它通常是答案很簡單。 後瀏覽互聯網的一段時間,我發現,去年發佈日誌消息的本地代碼:
//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();
,而是嘗試刪除onPreviewCallback
和mCamera.setPreviewCallback(null);
,它適用於我用新舊相機驅動程序測試過的所有設備!
mCamera.setPreviewCallback(null);
camera.takePicture(null, null, null, pictureCallback);