@Override
 public boolean reconnect(Handler handler, CameraOpenErrorCallback cb) {
   mCameraHandler.sendEmptyMessage(RECONNECT);
   mCameraHandler.waitDone();
   CameraOpenErrorCallback cbforward =
       CameraOpenErrorCallbackForward.getNewInstance(handler, cb);
   if (mReconnectIOException != null) {
     if (cbforward != null) {
       cbforward.onReconnectionFailure(AndroidCameraManagerImpl.this);
     }
     return false;
   }
   return true;
 }
 @Override
 public CameraManager.CameraProxy cameraOpen(
     Handler handler, int cameraId, CameraOpenErrorCallback callback) {
   mCameraHandler
       .obtainMessage(
           OPEN_CAMERA,
           cameraId,
           0,
           CameraOpenErrorCallbackForward.getNewInstance(handler, callback))
       .sendToTarget();
   mCameraHandler.waitDone();
   if (mCamera != null) {
     return new AndroidCameraProxyImpl();
   } else {
     return null;
   }
 }