summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2009-09-08 15:18:39 +0800
committerWu-cheng Li <wuchengli@google.com>2009-09-09 14:02:46 +0800
commit4c37a761a74d4bf9af3850894f3d919b7f272758 (patch)
tree88f62ae5ee102ce528f805f1b7c31176b61c571f /src
parentb3da2b6e9d45d0d885c6726d69678a8ed94b2604 (diff)
downloadLegacyCamera-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.java36
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(