Gallery.java revision f9a0a4306d589b4a4e20554fed512a603426bfa1
1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2009 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.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.R; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.common.Utils; 21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.DataManager; 22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.MediaItem; 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.MediaSet; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.data.Path; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.ui.GLRoot; 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.util.GalleryUtils; 27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.ActionBar; 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.ContentResolver; 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.Intent; 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.net.Uri; 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.os.Bundle; 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.Menu; 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.MenuItem; 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.Window; 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.widget.Toast; 37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic final class Gallery extends AbstractGalleryActivity { 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String EXTRA_SLIDESHOW = "slideshow"; 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String EXTRA_CROP = "crop"; 41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String ACTION_REVIEW = "com.android.camera.action.REVIEW"; 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String KEY_GET_CONTENT = "get-content"; 44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String KEY_GET_ALBUM = "get-album"; 45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String KEY_TYPE_BITS = "type-bits"; 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String KEY_MEDIA_TYPES = "mediaTypes"; 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "Gallery"; 49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private GalleryActionBar mActionBar; 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onCreate(Bundle savedInstanceState) { 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onCreate(savedInstanceState); 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin requestWindowFeature(Window.FEATURE_ACTION_BAR); 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin setContentView(R.layout.main); 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActionBar = new GalleryActionBar(this); 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (savedInstanceState != null) { 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().restoreFromState(savedInstanceState); 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin initializeByIntent(); 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private void initializeByIntent() { 69f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Intent intent = getIntent(); 70f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String action = intent.getAction(); 71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 72f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (Intent.ACTION_GET_CONTENT.equalsIgnoreCase(action)) { 73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin startGetContent(intent); 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else if (Intent.ACTION_PICK.equalsIgnoreCase(action)) { 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // We do NOT really support the PICK intent. Handle it as 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // the GET_CONTENT. However, we need to translate the type 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // in the intent here. 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Log.w(TAG, "action PICK is not supported"); 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String type = Utils.ensureNotNull(intent.getType()); 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (type.startsWith("vnd.android.cursor.dir/")) { 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (type.endsWith("/image")) intent.setType("image/*"); 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (type.endsWith("/video")) intent.setType("video/*"); 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 84f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin startGetContent(intent); 85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else if (Intent.ACTION_VIEW.equalsIgnoreCase(action) 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin || ACTION_REVIEW.equalsIgnoreCase(action)){ 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin startViewAction(intent); 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin startDefaultPage(); 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void startDefaultPage() { 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Bundle data = new Bundle(); 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(AlbumSetPage.KEY_MEDIA_PATH, 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getDataManager().getTopSetPath(DataManager.INCLUDE_ALL)); 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().startState(AlbumSetPage.class, data); 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private void startGetContent(Intent intent) { 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Bundle data = intent.getExtras() != null 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ? new Bundle(intent.getExtras()) 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin : new Bundle(); 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putBoolean(KEY_GET_CONTENT, true); 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int typeBits = GalleryUtils.determineTypeBits(this, intent); 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putInt(KEY_TYPE_BITS, typeBits); 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(AlbumSetPage.KEY_MEDIA_PATH, 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getDataManager().getTopSetPath(typeBits)); 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().startState(AlbumSetPage.class, data); 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private String getContentType(Intent intent) { 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String type = intent.getType(); 114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (type != null) return type; 115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 116f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Uri uri = intent.getData(); 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return getContentResolver().getType(uri); 119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } catch (Throwable t) { 120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Log.w(TAG, "get type fail", t); 121f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return null; 122f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 123f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 124f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 125f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private void startViewAction(Intent intent) { 126f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Boolean slideshow = intent.getBooleanExtra(EXTRA_SLIDESHOW, false); 127f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (slideshow) { 128f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getActionBar().hide(); 129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin DataManager manager = getDataManager(); 130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Path path = manager.findPathByUri(intent.getData()); 131f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (path == null || manager.getMediaObject(path) 132f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin instanceof MediaItem) { 133f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin path = Path.fromString( 134f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin manager.getTopSetPath(DataManager.INCLUDE_IMAGE)); 135f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 136f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Bundle data = new Bundle(); 137f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(SlideshowPage.KEY_SET_PATH, path.toString()); 138f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putBoolean(SlideshowPage.KEY_RANDOM_ORDER, true); 139f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putBoolean(SlideshowPage.KEY_REPEAT, true); 140f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().startState(SlideshowPage.class, data); 141f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 142f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Bundle data = new Bundle(); 143f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin DataManager dm = getDataManager(); 144f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Uri uri = intent.getData(); 145f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String contentType = getContentType(intent); 146f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (contentType == null) { 147f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Toast.makeText(this, 148f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin R.string.no_such_item, Toast.LENGTH_LONG).show(); 149f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin finish(); 150f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return; 151f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 152f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (contentType.startsWith( 153f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ContentResolver.CURSOR_DIR_BASE_TYPE)) { 154f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int mediaType = intent.getIntExtra(KEY_MEDIA_TYPES, 0); 155f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mediaType != 0) { 156f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin uri = uri.buildUpon().appendQueryParameter( 157f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin KEY_MEDIA_TYPES, String.valueOf(mediaType)) 158f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin .build(); 159f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 160f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Path albumPath = dm.findPathByUri(uri); 161f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (albumPath != null) { 162f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin MediaSet mediaSet = (MediaSet) dm.getMediaObject(albumPath); 163f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(AlbumPage.KEY_MEDIA_PATH, albumPath.toString()); 164f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().startState(AlbumPage.class, data); 165f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 166f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin startDefaultPage(); 167f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 168f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 169f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Path itemPath = dm.findPathByUri(uri); 170f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Path albumPath = dm.getDefaultSetOf(itemPath); 171f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (albumPath != null) { 172f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(PhotoPage.KEY_MEDIA_SET_PATH, 173f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin albumPath.toString()); 174f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 175f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin data.putString(PhotoPage.KEY_MEDIA_ITEM_PATH, itemPath.toString()); 176f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().startState(PhotoPage.class, data); 177f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 178f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 179f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 180f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 181f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 182f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public boolean onCreateOptionsMenu(Menu menu) { 183f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onCreateOptionsMenu(menu); 184f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return getStateManager().createOptionsMenu(menu); 185f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 186f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 187f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 188f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public boolean onOptionsItemSelected(MenuItem item) { 189f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin GLRoot root = getGLRoot(); 190f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.lockRenderThread(); 191f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 192f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return getStateManager().itemSelected(item); 193f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } finally { 194f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.unlockRenderThread(); 195f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 196f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 197f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 198f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 199f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onBackPressed() { 200f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // send the back event to the top sub-state 201f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin GLRoot root = getGLRoot(); 202f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.lockRenderThread(); 203f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 204f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().onBackPressed(); 205f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } finally { 206f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.unlockRenderThread(); 207f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 208f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 209f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 210f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 211f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onDestroy() { 212f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onDestroy(); 213f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin GLRoot root = getGLRoot(); 214f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.lockRenderThread(); 215f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 216f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin getStateManager().destroy(); 217f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } finally { 218f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin root.unlockRenderThread(); 219f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 220f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 221f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 222f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 223f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onResume() { 224f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.assertTrue(getStateManager().getStateCount() > 0); 225f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onResume(); 226f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 227f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 228f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 229f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public GalleryActionBar getGalleryActionBar() { 230f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mActionBar; 231f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 232f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 233