am 92537afd: Merge "Preload metadata for new videos." into gb-ub-photos-denali
* commit '92537afd29b1dd756e73c0bb58249521a6f65624':
Preload metadata for new videos.
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 4113905..a13fc43 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -91,6 +91,7 @@
import com.android.camera.data.LocalMediaObserver;
import com.android.camera.data.LocalSessionData;
import com.android.camera.data.MediaDetails;
+import com.android.camera.data.MetadataLoader;
import com.android.camera.data.PanoramaMetadataLoader;
import com.android.camera.data.RgbzMetadataLoader;
import com.android.camera.data.SimpleViewData;
@@ -1057,29 +1058,43 @@
updateStorageSpaceAndHint(null);
ContentResolver cr = getContentResolver();
String mimeType = cr.getType(uri);
+ LocalData newData = null;
if (LocalDataUtil.isMimeTypeVideo(mimeType)) {
sendBroadcast(new Intent(CameraUtil.ACTION_NEW_VIDEO, uri));
- LocalData newData = LocalMediaData.VideoData.fromContentUri(getContentResolver(), uri);
+ newData = LocalMediaData.VideoData.fromContentUri(getContentResolver(), uri);
if (newData == null) {
Log.e(TAG, "Can't find video data in content resolver:" + uri);
return;
}
- if (mDataAdapter.addData(newData)) {
- startPeekAnimation(newData);
- }
} else if (LocalDataUtil.isMimeTypeImage(mimeType)) {
CameraUtil.broadcastNewPicture(mAppContext, uri);
- LocalData newData = LocalMediaData.PhotoData.fromContentUri(getContentResolver(), uri);
+ newData = LocalMediaData.PhotoData.fromContentUri(getContentResolver(), uri);
if (newData == null) {
Log.e(TAG, "Can't find photo data in content resolver:" + uri);
return;
}
- if (mDataAdapter.addData(newData)) {
- startPeekAnimation(newData);
- }
} else {
Log.w(TAG, "Unknown new media with MIME type:" + mimeType + ", uri:" + uri);
+ return;
}
+ // We are preloading the metadata for new video since we need the
+ // rotation info for the thumbnail.
+ new AsyncTask<LocalData, Void, LocalData>() {
+
+ @Override
+ protected LocalData doInBackground(LocalData... params) {
+ LocalData data = params[0];
+ MetadataLoader.loadMetadata(getAndroidContext(), data);
+ return data;
+ }
+
+ @Override
+ protected void onPostExecute(LocalData data) {
+ if (mDataAdapter.addData(data)) {
+ startPeekAnimation(data);
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, newData);
}
@Override
diff --git a/src/com/android/camera/data/MetadataLoader.java b/src/com/android/camera/data/MetadataLoader.java
index 311f5cf..99811ce 100644
--- a/src/com/android/camera/data/MetadataLoader.java
+++ b/src/com/android/camera/data/MetadataLoader.java
@@ -22,7 +22,7 @@
* A helper class to load the metadata of
* {@link com.android.camera.data.LocalData}.
*/
-class MetadataLoader {
+public class MetadataLoader {
private static final String KEY_METADATA_CACHED = "metadata_cached";
@@ -36,7 +36,7 @@
* @param data The data to update metadata for.
* @return true if any metadata was added to the data, false otherwise.
*/
- static boolean loadMetadata(final Context context, final LocalData data) {
+ public static boolean loadMetadata(final Context context, final LocalData data) {
boolean metadataAdded = false;
if (data.getLocalDataType() == LocalData.LOCAL_IMAGE) {
PanoramaMetadataLoader.loadPanoramaMetadata(context, data.getUri(),