History log of /packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8e29072ca69229a25dc4a856e3635d131613f4ca 22-Jan-2015 Alan Newberger <alann@google.com> Reduce view add/removes when loading photos

Two fixes to reduce flicker when loading images. First, adjust
ViewItem instances in-place instead of creating new ViewItems
which included adding and removing views from the hierarchy.
It turned out we were doing an update for every photo due to
touching PanoramaMetadata and reporting back that metadata
was adjusted, whether or not a photo was a panorama. Now
that data is reported. New photo captures are essentially
added and removed from the view hierarchy three times before
this change, after an ImageView is added once, with its
contents changed as the photo is loaded.

More testing is needed but I cannot repro the elusive filmstrip
flicker with these changes.

Bug: 18977838
Bug: 17905863
Change-Id: I5a42c0baf87a8cef0ee4dbcf9f03d40715e6aa2d
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
8ee16b8a323ffa20e6fb1270d498ec445f64defc 18-Dec-2014 Paul Rohde <codelogic@google.com> Refactor the filmstrip backing data.

- Remove unused fields and code.
- Rename classes and methods to be consistent with usage
- Make data more immutable
- Add Location and Metadata classes for typed data access.
- Use Date instead of long for DateTime representations.
- Filmstrip prefix for filmstrip specific code.
- Cleaner Glide implementations.
- Initialize Glide bitmap pool.
- Eagerly load large image sizes when scroll stops.

Change-Id: I3b51d42416ca076c80bf7db441d257659174b47d
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
810b0b6c5e1539ddd94c3a268b3f03301c35998b 30-Apr-2014 Angus Kong <shkong@google.com> Preload metadata for new videos.

bug:14279339
Change-Id: I4733199fecc45b24abc41a241fdb5af3421f5652
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00 17-Mar-2014 Sam Judd <judds@google.com> Best effort fix to prevent stretched videos.

To avoid increasing load times, we now only parse video headers asynchronously
while the user scrolls. We make a best effort attempt to prefetch video headers
while we're scrolling to avoid the layout jumping around when we update
dimensions for an item that's visible to the user.

Bug: 13505062
Change-Id: Ib7d7835c39d50f22f45db5673ec4c49d84b81124
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
571a8c389798bd3f01429f6be34cd3e606ab34df 13-Mar-2014 Angus Kong <shkong@google.com> Refactor data model.

bug:13176987
bug:13410244

This refactor is to make the relationship between Controller, Model and View
clearer. Now controller (CameraActivity in our case) takes the full
responsibility to add/remove data. The model (CameraDataAdapter, LocalData and
its subclasses) is only responsible to store the data with correct types and
data structures. The view (Filmstrip) is a totally passive component who takes
care of how the data is presented and define how the user can interactive with
it.

The session API should not be exposed to the filmstrip MVC architecture and
instead we should make them as independent as possible. The controller should
maintain the logics of how to interact between these components.

Major changes in this CL:
1. ImageData.getContentUri() -> getUri(). The Uri is no longer a content Uri.
2. LocalDataAdapter: addNewSession() and finishSession() removed. We don't
assume the session concept in data adapters anymore.
3. LocalDataAdapter: addPhotoData() removed.
4. LocalDataAdapter: addData() added (original private in CameraDataAdapter)
5. LocalDataAdapter.Listener: onNewDataAdded() removed (since it's actually
triggered by the caller who is adding the data.)

Session API change:
CaptureSession.onPreviewUpdated() is changed to onPreviewAvailable. The module
now should decide the timing to notify the availability of the preview through
it.
CaptureSession.updatePreview(String path) is added. Not all the module can have
a preview when the session is created. Panorama/PhotoSphere creates the preview
after a background processing. The preview is stored as a file and should be
update to the internal preview storage through CaptureSession.updatePreview().

Change-Id: Id73c8f289bd4b3c13149da1b72c99fc6bab5849e
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java
e2f4c03eaea059e15adf34d8782c433b1f7164dc 19-Dec-2013 Angus Kong <shkong@google.com> Load metadata of LocalData on demand.

1. Metadata of LocalData is not always needed. It's more efficient to load it on
demand.
2. MetadataLoader added to be responsible for loading all the metadata.
3. Metadata loading callback added in LocalDataListener.
4. The loading of the metadata and the bitmap are now all executed by the thread
pool executor.

bug:12216695
Change-Id: I5c75746630e9952b389f9b50416a0bb950301f33
/packages/apps/Camera2/src/com/android/camera/data/MetadataLoader.java