diff options
author | Angus Kong <shkong@google.com> | 2013-08-14 20:37:48 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-08-14 20:37:49 +0000 |
commit | 18a29449cf72bb693eb63e30ba2b7e70853c454b (patch) | |
tree | 2ba1339d6980802694cd71f2465c526cfcd322b9 | |
parent | a1a52fc26adbfa7f464b996cc5ea420d3f29a324 (diff) | |
parent | 0989e394420705b66867a8c1cf273b5904c8e4eb (diff) | |
download | android_packages_apps_Snap-18a29449cf72bb693eb63e30ba2b7e70853c454b.tar.gz android_packages_apps_Snap-18a29449cf72bb693eb63e30ba2b7e70853c454b.tar.bz2 android_packages_apps_Snap-18a29449cf72bb693eb63e30ba2b7e70853c454b.zip |
Merge "Handle unexpected exceptions when loading videos." into gb-ub-photos-carlsbad
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 18 | ||||
-rw-r--r-- | src/com/android/camera/data/LocalMediaData.java | 41 |
2 files changed, 35 insertions, 24 deletions
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index 4b353f1cf..1f5ae2467 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -71,7 +71,6 @@ public class PhotoUI implements PieListener, CameraManager.CameraFaceDetectionCallback { private static final String TAG = "CAM_UI"; - private static final int UPDATE_TRANSFORM_MATRIX = 1; private static final int DOWN_SAMPLE_FACTOR = 4; private final AnimationManager mAnimationManager; private CameraActivity mActivity; @@ -119,18 +118,6 @@ public class PhotoUI implements PieListener, private TextureView mTextureView; private Matrix mMatrix = null; private float mAspectRatio = 4f / 3f; - private final Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case UPDATE_TRANSFORM_MATRIX: - setTransformMatrix(mPreviewWidth, mPreviewHeight); - break; - default: - break; - } - } - }; public interface SurfaceTextureSizeChangedListener { public void onSurfaceTextureSizeChanged(int uncroppedWidth, int uncroppedHeight); @@ -152,7 +139,6 @@ public class PhotoUI implements PieListener, if (mPreviewWidth != width || mPreviewHeight != height) { mPreviewWidth = width; mPreviewHeight = height; - onScreenSizeChanged(width, height, w, h); mController.onScreenSizeChanged(width, height, w, h); } } @@ -212,10 +198,6 @@ public class PhotoUI implements PieListener, mAnimationManager = new AnimationManager(); } - public void onScreenSizeChanged(int width, int height, int previewWidth, int previewHeight) { - setTransformMatrix(width, height); - } - public void setSurfaceTextureSizeChangedListener(SurfaceTextureSizeChangedListener listener) { mSurfaceTextureSizeListener = listener; } diff --git a/src/com/android/camera/data/LocalMediaData.java b/src/com/android/camera/data/LocalMediaData.java index 05b907a1e..d5a929d36 100644 --- a/src/com/android/camera/data/LocalMediaData.java +++ b/src/com/android/camera/data/LocalMediaData.java @@ -443,16 +443,26 @@ public abstract class LocalMediaData implements LocalData { d.height = c.getInt(COL_HEIGHT); d.mPlayUri = d.getContentUri(); MediaMetadataRetriever retriever = new MediaMetadataRetriever(); - retriever.setDataSource(d.path); - String rotation = retriever.extractMetadata( + String rotation = null; + try { + retriever.setDataSource(d.path); + } catch (IllegalArgumentException ex) { + retriever.release(); + Log.e(TAG, "MediaMetadataRetriever.setDataSource() fail:" + + ex.getMessage()); + return null; + } + rotation = retriever.extractMetadata( MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION); if (d.width == 0 || d.height == 0) { - d.width = Integer.parseInt(retriever.extractMetadata( - MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); - d.height = Integer.parseInt(retriever.extractMetadata( - MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + retrieveVideoDimension(retriever, d); } retriever.release(); + if (d.width == 0 || d.height == 0) { + // Width or height is still not available. + Log.e(TAG, "Unable to retrieve dimension of video:" + d.path); + return null; + } if (rotation != null && (rotation.equals("90") || rotation.equals("270"))) { int b = d.width; @@ -509,6 +519,9 @@ public abstract class LocalMediaData implements LocalData { return false; } VideoData newData = buildFromCursor(c); + if (newData == null) { + return false; + } id = newData.id; title = newData.title; mimeType = newData.mimeType; @@ -587,6 +600,22 @@ public abstract class LocalMediaData implements LocalData { return bitmap; } } + + /** + * Extracts video height/width if available. If + * unavailable, set to 0. + * @param retriever An initialized metadata retriever. + * @param d The {@link VideoData} whose width/height are to update. + */ + private static void retrieveVideoDimension( + MediaMetadataRetriever retriever, VideoData d) { + String val = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); + d.width = (val == null) ? 0 : Integer.parseInt(val); + val = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); + d.height = (val == null) ? 0 : Integer.parseInt(val); + } } /** |