1e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong/* 2e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Copyright (C) 2013 The Android Open Source Project 3e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * 4e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Licensed under the Apache License, Version 2.0 (the "License"); 5e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * you may not use this file except in compliance with the License. 6e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * You may obtain a copy of the License at 7e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * 8e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * http://www.apache.org/licenses/LICENSE-2.0 9e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * 10e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Unless required by applicable law or agreed to in writing, software 11e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * distributed under the License is distributed on an "AS IS" BASIS, 12e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * See the License for the specific language governing permissions and 14e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * limitations under the License. 15e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong */ 16e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong 17e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kongpackage com.android.camera.data; 18e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong 19e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kongimport android.content.Context; 20e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong 21e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong/** 22e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * A helper class to load the metadata of 238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * {@link FilmstripItem}. 24e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong */ 25810b0b6c5e1539ddd94c3a268b3f03301c35998bAngus Kongpublic class MetadataLoader { 26e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong 27de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd /** 28de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * Adds information to the data's metadata bundle if any is available and returns 29de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * true if metadata was added and false otherwise. In either case, sets 30de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * a flag indicating that we've cached any available metadata and don't need to 31de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * load metadata again for this particular item. 32de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * 338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * TODO: Replace with more explicit polymorphism. 348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 35de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * @param context A context. 36de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * @param data The data to update metadata for. 37de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd * @return true if any metadata was added to the data, false otherwise. 38de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd */ 398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static boolean loadMetadata(final Context context, final FilmstripItem data) { 40de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd boolean metadataAdded = false; 418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde if (data.getAttributes().isImage()) { 428e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger metadataAdded |= PanoramaMetadataLoader.loadPanoramaMetadata( 438e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger context, data.getData().getUri(), data.getMetadata()); 448e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger metadataAdded |= RgbzMetadataLoader.loadRgbzMetadata( 458e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger context, data.getData().getUri(), data.getMetadata()); 468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } else if (data.getAttributes().isVideo()) { 478e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger metadataAdded = VideoRotationMetadataLoader.loadRotationMetadata(data); 48de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd } 498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde data.getMetadata().setLoaded(true); 50de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd return metadataAdded; 51e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong } 52e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong} 538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 54