ActivityState.java revision 5585826e68c62c3719fb346d40fd1999438c6c6b
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.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 191336062985c9824d7fd796b1cebd5eaa8e4163caOwen Linimport android.app.ActionBar; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.app.Activity; 218e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.BroadcastReceiver; 2211f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.content.ContentResolver; 238e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Context; 248e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.Intent; 258e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.content.IntentFilter; 268e565703e8d482421714383a8ad40a67929ce2daOwen Linimport android.content.res.Configuration; 278e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.os.BatteryManager; 28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.os.Bundle; 2911f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.provider.Settings; 3011f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescuimport android.provider.Settings.SettingNotFoundException; 311336062985c9824d7fd796b1cebd5eaa8e4163caOwen Linimport android.view.Menu; 321336062985c9824d7fd796b1cebd5eaa8e4163caOwen Linimport android.view.MenuInflater; 331336062985c9824d7fd796b1cebd5eaa8e4163caOwen Linimport android.view.MenuItem; 348e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandlerimport android.view.Window; 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.WindowManager; 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 37915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.R; 38a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chenimport com.android.gallery3d.ui.GLView; 395585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescuimport com.android.gallery3d.ui.PreparePageFadeoutTexture; 405585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescuimport com.android.gallery3d.ui.RawTexture; 41915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescuimport com.android.gallery3d.util.GalleryUtils; 42a9bd72c2efc7f7c26c60083d8f00380e60caf94eRay Chen 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linabstract public class ActivityState { 44d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_ACTION_BAR = 1; 45d83f5f227315cccfe3c23db90c93b5fd7be20597Yuli Huang protected static final int FLAG_HIDE_STATUS_BAR = 2; 46afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_WHEN_PLUGGED = 4; 47afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang protected static final int FLAG_SCREEN_ON_ALWAYS = 8; 48efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li protected static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 16; 49efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li protected static final int FLAG_SHOW_WHEN_LOCKED = 32; 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 51b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected AbstractGalleryActivity mActivity; 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected Bundle mData; 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected int mFlags; 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mReceivedResults; 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ResultEntry mResult; 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected static class ResultEntry { 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int requestCode; 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public int resultCode = Activity.RESULT_CANCELED; 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Intent resultData; 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 6411f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu protected boolean mHapticsEnabled; 6511f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu private ContentResolver mContentResolver; 6611f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 6757cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan private boolean mDestroyed = false; 688e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler private boolean mPlugged = false; 69616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin boolean mIsFinishing = false; 7057cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 715585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private static final String KEY_TRANSITION_IN = "transition-in"; 725585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 735585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private RawTexture mFadeOutTexture; 745585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private GLView mContentPane; 755585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private boolean mWantFadeOut = false; 765585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu private boolean mTransitionIn; 775585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected ActivityState() { 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setContentPane(GLView content) { 825585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mContentPane = content; 835585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu if (mTransitionIn) { 845585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mContentPane.setFadeOutTexture(mFadeOutTexture); 855585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mFadeOutTexture = null; 865585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 875585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mContentPane.setBackgroundColor(getBackgroundColor()); 885585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mActivity.getGLRoot().setContentPane(mContentPane); 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 91b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin void initialize(AbstractGalleryActivity activity, Bundle data) { 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity = activity; 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mData = data; 9411f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mContentResolver = activity.getAndroidContext().getContentResolver(); 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public Bundle getData() { 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return mData; 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onBackPressed() { 1025585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu if (mActivity.getStateManager().getStateCount() > 1) { 1035585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu fadeOutOnNextPause(); 1045585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mActivity.getStateManager().finishState(this); 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void setStateResult(int resultCode, Intent data) { 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mResult == null) return; 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultCode = resultCode; 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mResult.resultData = data; 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1148e565703e8d482421714383a8ad40a67929ce2daOwen Lin protected void onConfigurationChanged(Configuration config) { 1158e565703e8d482421714383a8ad40a67929ce2daOwen Lin } 1168e565703e8d482421714383a8ad40a67929ce2daOwen Lin 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onSaveState(Bundle outState) { 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onStateResult(int requestCode, int resultCode, Intent data) { 121f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 122f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 123915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] mBackgroundColor; 124915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 125915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected int getBackgroundColorId() { 126915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return R.color.default_background; 127915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 128915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 129915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu protected float[] getBackgroundColor() { 130915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu return mBackgroundColor; 131915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu } 132915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu 133f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onCreate(Bundle data, Bundle storedState) { 134915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mBackgroundColor = GalleryUtils.intColorToFloatARGBArray( 135915c2c5b2c367df71599370613af0924bd7c4887Bobby Georgescu mActivity.getResources().getColor(getBackgroundColorId())); 136f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 137f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 13814d3289b4867c21da93ec4032119c0091bc78c30George Mount protected void clearStateResult() { 13914d3289b4867c21da93ec4032119c0091bc78c30George Mount } 14014d3289b4867c21da93ec4032119c0091bc78c30George Mount 1418e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler BroadcastReceiver mPowerIntentReceiver = new BroadcastReceiver() { 1428e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler @Override 1438e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler public void onReceive(Context context, Intent intent) { 1448e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final String action = intent.getAction(); 1458e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 1468e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler boolean plugged = (0 != intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)); 1478e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1488e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler if (plugged != mPlugged) { 1498e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler mPlugged = plugged; 150efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li setScreenFlags(); 1518e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1528e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1538e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1548e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler }; 1558e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 156efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li private void setScreenFlags() { 157efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li final Window win = mActivity.getWindow(); 1580b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang final WindowManager.LayoutParams params = win.getAttributes(); 159afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if ((0 != (mFlags & FLAG_SCREEN_ON_ALWAYS)) || 160afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang (mPlugged && 0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED))) { 161efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 162efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } else { 163efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 164efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } 165efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li if (0 != (mFlags & FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)) { 166efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; 167efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } else { 168efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; 169efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li } 170efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li if (0 != (mFlags & FLAG_SHOW_WHEN_LOCKED)) { 171efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; 1728e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } else { 173efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li params.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; 1748e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1750b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang win.setAttributes(params); 1768e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 1778e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 1785585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu protected void fadeOutOnNextPause() { 1795585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mWantFadeOut = true; 1805585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 1815585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu 182f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onPause() { 183afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 184002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang ((Activity) mActivity).unregisterReceiver(mPowerIntentReceiver); 185002a3fece284f713537fad4523ee963d257350e9Chih-Chung Chang } 1865585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu if (mWantFadeOut) { 1875585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mWantFadeOut = false; 1885585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mActivity.getTransitionStore().put(KEY_TRANSITION_IN, true); 1895585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu PreparePageFadeoutTexture.prepareFadeOutTexture(mActivity, mContentPane); 1905585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu } 191f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 192f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 193f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // should only be called by StateManager 194f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin void resume() { 195b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin AbstractGalleryActivity activity = mActivity; 1961336062985c9824d7fd796b1cebd5eaa8e4163caOwen Lin ActionBar actionBar = activity.getActionBar(); 197f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (actionBar != null) { 198f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if ((mFlags & FLAG_HIDE_ACTION_BAR) != 0) { 199f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.hide(); 200f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else { 201f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin actionBar.show(); 202f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 203f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int stateCount = mActivity.getStateManager().getStateCount(); 204655f63f04638dfe31045eab1b6b4c39cc2db10dbRay Chen mActivity.getGalleryActionBar().setDisplayOptions(stateCount > 1, true); 205fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen // Default behavior, this can be overridden in ActivityState's onResume. 206fe1625c46f8258be4cd5e5e1ba69b584c1fe1a49Ray Chen actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 207f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 208f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 209f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin activity.invalidateOptionsMenu(); 210f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 211efd480e85dc5bd0d2ca0ac82d03e141212388830Wu-cheng Li setScreenFlags(); 2128e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 2130b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang boolean lightsOut = ((mFlags & FLAG_HIDE_STATUS_BAR) != 0); 2140b2486cff0c1b951c54325596256b986307f7f3aChih-Chung Chang mActivity.getGLRoot().setLightsOutMode(lightsOut); 2158e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 216f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ResultEntry entry = mReceivedResults; 217f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (entry != null) { 218f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mReceivedResults = null; 219f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onStateResult(entry.requestCode, entry.resultCode, entry.resultData); 220f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 2218e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler 222afb3d1d8f341620f6b69d47d52b515f53817aa91Yuli Huang if (0 != (mFlags & FLAG_SCREEN_ON_WHEN_PLUGGED)) { 2238e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler // we need to know whether the device is plugged in to do this correctly 2248e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler final IntentFilter filter = new IntentFilter(); 2258e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler filter.addAction(Intent.ACTION_BATTERY_CHANGED); 2268e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler activity.registerReceiver(mPowerIntentReceiver, filter); 2278e6fd7cee5467824cd96b4127ccc755c70bd4ea3Daniel Sandler } 22811f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 22911f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu try { 23011f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mHapticsEnabled = Settings.System.getInt(mContentResolver, 23111f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu Settings.System.HAPTIC_FEEDBACK_ENABLED) != 0; 23211f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu } catch (SettingNotFoundException e) { 23311f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu mHapticsEnabled = false; 23411f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu } 23511f14dc9e1d4d04b7c21b076445f3cb8c173753bBobby Georgescu 236f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin onResume(); 237616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 238616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin // the transition store should be cleared after resume; 239616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin mActivity.getTransitionStore().clear(); 240f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 241f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 242f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // a subclass of ActivityState should override the method to resume itself 243f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onResume() { 2445585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mFadeOutTexture = mActivity.getTransitionStore().get( 2455585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu PreparePageFadeoutTexture.KEY_FADE_TEXTURE); 2465585826e68c62c3719fb346d40fd1999438c6c6bBobby Georgescu mTransitionIn = mActivity.getTransitionStore().get(KEY_TRANSITION_IN, false); 247f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 248f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 249f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onCreateActionBar(Menu menu) { 2506cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // TODO: we should return false if there is no menu to show 2516cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin // this is a workaround for a bug in system 2526cf807453fb58ccd4cc513ff187b306c7090e67cOwen Lin return true; 253f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 254f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 255f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected boolean onItemSelected(MenuItem item) { 256f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return false; 257f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 258f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 259f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onDestroy() { 26057cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan mDestroyed = true; 26157cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan } 26257cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan 26357cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan boolean isDestroyed() { 26457cbaa1ef40d2215c6400f5ae4af3a09e67abb2dHung-ying Tyan return mDestroyed; 265f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 266616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin 267616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin public boolean isFinishing() { 268616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin return mIsFinishing; 269616a70fdb4473d2fbd7b70772a3a82b908aeae1eOwen Lin } 270b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin 271b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin protected MenuInflater getSupportMenuInflater() { 2721336062985c9824d7fd796b1cebd5eaa8e4163caOwen Lin return mActivity.getMenuInflater(); 273b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin } 274f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 275