diff options
author | Wu-cheng Li <wuchengli@google.com> | 2009-09-08 15:18:39 +0800 |
---|---|---|
committer | Wu-cheng Li <wuchengli@google.com> | 2009-09-09 14:02:46 +0800 |
commit | 4c37a761a74d4bf9af3850894f3d919b7f272758 (patch) | |
tree | 88f62ae5ee102ce528f805f1b7c31176b61c571f /src | |
parent | b3da2b6e9d45d0d885c6726d69678a8ed94b2604 (diff) | |
download | LegacyCamera-4c37a761a74d4bf9af3850894f3d919b7f272758.zip LegacyCamera-4c37a761a74d4bf9af3850894f3d919b7f272758.tar.gz LegacyCamera-4c37a761a74d4bf9af3850894f3d919b7f272758.tar.bz2 |
Set optimal preview size.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/Camera.java | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java index 0c7dfde..5deb0d6 100644 --- a/src/com/android/camera/Camera.java +++ b/src/com/android/camera/Camera.java @@ -895,6 +895,9 @@ public class Camera extends Activity implements View.OnClickListener, } catch (InterruptedException ex) { // ignore } + + // Resize mVideoPreview to the right aspect ratio. + resizeForPreviewAspectRatio(mSurfaceView); } @Override @@ -1531,6 +1534,31 @@ public class Camera extends Activity implements View.OnClickListener, clearFocusState(); } + private void resizeForPreviewAspectRatio(View v) { + ViewGroup.LayoutParams params; + params = v.getLayoutParams(); + Size size = mParameters.getPreviewSize(); + params.width = (int) (params.height * size.width / size.height); + Log.v(TAG, "resize to " + params.width + "x" + params.height); + v.setLayoutParams(params); + } + + private Size getOptimalPreviewSize(List<Size> sizes) { + Size optimalSize = null; + if (sizes != null) { + optimalSize = sizes.get(0); + for (int i = 1; i < sizes.size(); i++) { + if (Math.abs(sizes.get(i).height - mViewFinderHeight) < + Math.abs(optimalSize.height - mViewFinderHeight)) { + optimalSize = sizes.get(i); + } + } + Log.v(TAG, "Optimal preview size is " + optimalSize.width + "x" + + optimalSize.height); + } + return optimalSize; + } + private void setCameraParameter() { mParameters = mCameraDevice.getParameters(); @@ -1542,8 +1570,12 @@ public class Camera extends Activity implements View.OnClickListener, mParameters.setPreviewFrameRate(max); } - // Set preview size. - mParameters.setPreviewSize(mViewFinderWidth, mViewFinderHeight); + // Set a preview size that is closest to the viewfinder height. + List<Size> sizes = mParameters.getSupportedPreviewSizes(); + Size optimalSize = getOptimalPreviewSize(sizes); + if (optimalSize != null) { + mParameters.setPreviewSize(optimalSize.width, optimalSize.height); + } // Set picture size. String pictureSize = mPreferences.getString( |