java.lang.RuntimeException: Camera is being used after Camera.release() was called

java.lang.RuntimeException: Camera is being used after Camera.release() was called

錯誤就是上述這個錯誤,錯誤出現在Android相機開發中,我所實現的方法貼一下:

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            if (!isOpenCamera)
                return;
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();
            mCamera.lock();
            mCamera.release();
            mCamera = null;
        }
乍一看沒啥錯誤,但是這個錯誤會在不經意間蹦出來影響應用的運行,直接就AAR了.所以爲了解決這個錯誤,需要在camera調用setPreviewCallback之前加上一句代碼,加完代碼後的方法爲:

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            if (!isOpenCamera)
                return;
            holder.removeCallback(this);
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();
            mCamera.lock();
            mCamera.release();
            mCamera = null;
        }
到此我的問題已經解決,但是我正在想爲什麼這麼做?
發佈了68 篇原創文章 · 獲贊 14 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章