diff --git a/examples/cpp/CameraDemo/main.cpp b/examples/cpp/CameraDemo/main.cpp index 16b9aa59a..ca0295ff4 100644 --- a/examples/cpp/CameraDemo/main.cpp +++ b/examples/cpp/CameraDemo/main.cpp @@ -257,8 +257,8 @@ class AppScreen : public ButtonListener, public StackScreenListener */ void setupCameraProperties() { - setupCameraSize(); maCameraSelect(mSettingsScreen->getCurrentCamera()); + setupCameraSize(); mCameraPreview->bindToCurrentCamera(); maCameraSetProperty( MA_CAMERA_FLASH_MODE, diff --git a/runtimes/java/platforms/androidJNI/AndroidProject/src/com/mosync/internal/android/MoSyncCameraController.java b/runtimes/java/platforms/androidJNI/AndroidProject/src/com/mosync/internal/android/MoSyncCameraController.java index 1a93d5f18..e5d3f744e 100644 --- a/runtimes/java/platforms/androidJNI/AndroidProject/src/com/mosync/internal/android/MoSyncCameraController.java +++ b/runtimes/java/platforms/androidJNI/AndroidProject/src/com/mosync/internal/android/MoSyncCameraController.java @@ -198,15 +198,12 @@ public int numberOfCameras() } try { - if(mCamera == null) - { - tempCamera = Camera.open(); - } - else - { - mCamera.release(); - tempCamera = Camera.open(mCurrentCameraIndex); - } + if (mCamera == null) { + tempCamera = Camera.open(); + } else { + mCamera.release(); + tempCamera = Camera.open(mCurrentCameraIndex); + } //We have to use and static instance of the camera in the reflection here mGetNumberofCameras = tempCamera.getClass().getMethod( @@ -350,6 +347,7 @@ public int setActiveCamera(int CameraNumber) mPreview.mCameraIndex = mCurrentCameraIndex; mCamera.setParameters(getCurrentParameters()); } catch (Exception e) { + SYSLOG("cannot open camera " + e); } } @@ -437,6 +435,7 @@ public int cameraSnapshot(int formatIndex, int placeHolder) } resourceIndex = placeHolder; + // mPreview.mCamera.cancelAutoFocus(); mPreview.mCamera.takePicture(null, rawCallback, jpegCallback); lock.lock(); @@ -636,7 +635,11 @@ public void acquireCamera() { try { - mCamera = Camera.open(); + if (mNumCameras <= 1) { + mCamera = Camera.open(); + } else { + mCamera = Camera.open(mCurrentCameraIndex); + } //mPreview.mCamera = mCamera; } catch (RuntimeException re) @@ -664,8 +667,14 @@ private void setNewSize(int formatIndex) { Camera.Parameters parameters = getCurrentParameters(); List supportedSizes = parameters.getSupportedPictureSizes(); - Camera.Size optimalPictureSize = supportedSizes.get(formatIndex); - parameters.setPictureSize(optimalPictureSize.width,optimalPictureSize.height); + try { + Camera.Size optimalPictureSize = supportedSizes + .get(formatIndex); + parameters.setPictureSize(optimalPictureSize.width, + optimalPictureSize.height); + } catch (IndexOutOfBoundsException e) { + SYSLOG("Size not supported " + formatIndex); + } if (mCamera != null) mCamera.setParameters(parameters); }