1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.data; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.net.Uri; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic abstract class MediaObject { 22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @SuppressWarnings("unused") 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "MediaObject"; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final long INVALID_DATA_VERSION = -1; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // These are the bits returned from getSupportedOperations(): 27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_DELETE = 1 << 0; 28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_ROTATE = 1 << 1; 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_SHARE = 1 << 2; 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_CROP = 1 << 3; 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_SHOW_ON_MAP = 1 << 4; 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_SETAS = 1 << 5; 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_FULL_IMAGE = 1 << 6; 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_PLAY = 1 << 7; 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_CACHE = 1 << 8; 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_EDIT = 1 << 9; 37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_INFO = 1 << 10; 38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_IMPORT = 1 << 11; 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int SUPPORT_ALL = 0xffffffff; 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // These are the bits returned from getMediaType(): 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int MEDIA_TYPE_UNKNOWN = 1; 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int MEDIA_TYPE_IMAGE = 2; 44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int MEDIA_TYPE_VIDEO = 4; 45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int MEDIA_TYPE_ALL = MEDIA_TYPE_IMAGE | MEDIA_TYPE_VIDEO; 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // These are flags for cache() and return values for getCacheFlag(): 48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_FLAG_NO = 0; 49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_FLAG_SCREENNAIL = 1; 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_FLAG_FULL = 2; 51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // These are return values for getCacheStatus(): 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_STATUS_NOT_CACHED = 0; 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_STATUS_CACHING = 1; 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_STATUS_CACHED_SCREENNAIL = 2; 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final int CACHE_STATUS_CACHED_FULL = 3; 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static long sVersionSerial = 0; 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected long mDataVersion; 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected final Path mPath; 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public MediaObject(Path path, long version) { 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin path.setObject(this); 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mPath = path; 67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mDataVersion = version; 68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 69f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 70f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Path getPath() { 71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mPath; 72f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int getSupportedOperations() { 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return 0; 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void delete() { 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void rotate(int degrees) { 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 84f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Uri getContentUri() { 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Uri getPlayUri() { 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int getMediaType() { 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return MEDIA_TYPE_UNKNOWN; 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public boolean Import() { 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public MediaDetails getDetails() { 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin MediaDetails details = new MediaDetails(); 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return details; 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public long getDataVersion() { 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mDataVersion; 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int getCacheFlag() { 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return CACHE_FLAG_NO; 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int getCacheStatus() { 116f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public long getCacheSize() { 120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 121f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 122f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 123f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void cache(int flag) { 124f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new UnsupportedOperationException(); 125f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 126f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 127f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static synchronized long nextVersionNumber() { 128f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return ++MediaObject.sVersionSerial; 129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 131