Camera2 APIでカメラアプリを制作しています。  
フロントカメラとバックカメラを切り替える時に、たまに落ちてしまうことがあります。  
エラーは下記の内容になります。

```

    IllegalStateException: CameraDevice was already closed
    
```

実際のコードは下記になります。  
切り替える時にカメラを閉じているとこと、再スタートする部分になります。

```

    //一度閉じる
    public void close() {
    
    　　　　try {
           　　mCameraOpenCloseLock.acquire();
              if (null != mCaptureSession) {
                    mCaptureSession.close();
                    mCaptureSession = null;
              }
              if (null != mCameraDevice) {
                    mCameraDevice.close();
                    mCameraDevice = null;
              }
          } catch (InterruptedException e) {
              throw new RuntimeException("Interrupted while trying to lock camera closing.", e);
          } finally {
              mCameraOpenCloseLock.release();
          }
    　　　　if (null != mImageReader) {
                mImageReader.close();
                mImageReader = null;
    　　　　}
    　　　　mThread.stop();
    }
    
    
    //カメラ再プレビュー
    private void startCameraPreview(){
    
            mThread.start(); 
            if (mTextureView.isAvailable()) {
                openCamera(mTextureView.getWidth(), mTextureView.getHeight());
            } else { 
              mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
            }
    }
    
```

上記のようなコードで切り替えているのですが、エラーが出てしまいます。  
onOpenedでは下記のようにしているので、CameraDeviceが閉じているということは無いような気がするのですが。

```

    public void onOpened(CameraDevice cameraDevice) {
    
           mCameraOpenCloseLock.release();
           mCameraDevice = cameraDevice;
           createCameraPreviewSession();
    
    }
    
```

どなたかお詳しい方いらっしゃいましたらお知恵をお貸しいただきたいです。  
どうぞ宜しくお願い致します。
CC BY-SA 3.0
2016-09-20T09:33:14.380
28998
2016-09-20T09:33:14.380
16955
question
android camera
Androidアプリ ー カメラを切り替えるとたまに落ちる問題