@Override
  public void surfaceDestroyed(SurfaceHolder holder) {
    isCreated = false;

    Log.w("MySurfaceView", "surfaceDestroyed");

    boolean retry = true;
    // close thread
    processCameraDataThread.stopProcessing();
    while (retry) {
      try {
        processCameraDataThread.join();
        retry = false;
      } catch (InterruptedException e) {
        // try again
      }
    }
  }
  @Override
  public void surfaceCreated(SurfaceHolder holder) {
    isCreated = true;

    Log.w("MySurfaceView", "surfaceCreated");

    openCamera();

    processCameraDataThread = new ProcessDataThread();
    processCameraDataThread.start();
  }