1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2007 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 197a5e1e771ae58241f3a2be36f23025f282032261Owen Linimport android.annotation.TargetApi; 202abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.app.ActionBar; 212abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.app.Activity; 224ba06f02e9182160ce155871cbd088919b0ac0c6Pin Tingimport android.content.AsyncQueryHandler; 23be055bc0318828029a4bda0e31e9d8e3ce17ca4bOwen Linimport android.content.ContentResolver; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.Intent; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.pm.ActivityInfo; 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.database.Cursor; 277b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chenimport android.graphics.Bitmap; 287b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chenimport android.graphics.drawable.BitmapDrawable; 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.media.AudioManager; 30e6e4beb069778fafd053552287e36304df5626ebRay Chenimport android.net.Uri; 317a5e1e771ae58241f3a2be36f23025f282032261Owen Linimport android.os.Build; 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.os.Bundle; 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.provider.MediaStore; 344ba06f02e9182160ce155871cbd088919b0ac0c6Pin Tingimport android.provider.OpenableColumns; 35fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Changimport android.view.KeyEvent; 362abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.view.Menu; 372abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.view.MenuItem; 38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.View; 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.Window; 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.view.WindowManager; 412abaaf7caa9a83ba1ea759868aabde7f21387184John Reckimport android.widget.ShareActionProvider; 42e6e4beb069778fafd053552287e36304df5626ebRay Chen 43e6e4beb069778fafd053552287e36304df5626ebRay Chenimport com.android.gallery3d.R; 447a5e1e771ae58241f3a2be36f23025f282032261Owen Linimport com.android.gallery3d.common.ApiHelper; 454ba06f02e9182160ce155871cbd088919b0ac0c6Pin Tingimport com.android.gallery3d.common.Utils; 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/** 48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * This activity plays a video from a specified URI. 497b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chen * 507b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chen * The client of this activity can pass a logo bitmap in the intent (KEY_LOGO_BITMAP) 517b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chen * to set the action bar logo so the playback process looks more seamlessly integrated with 527b9c72a32694f180fbc7bf4652720db9d46e30f4Ray Chen * the original activity. 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 542abaaf7caa9a83ba1ea759868aabde7f21387184John Reckpublic class MovieActivity extends Activity { 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @SuppressWarnings("unused") 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "MovieActivity"; 57a3871050845b4921379add2b126add3cfbab1109Ray Chen public static final String KEY_LOGO_BITMAP = "logo-bitmap"; 58a3871050845b4921379add2b126add3cfbab1109Ray Chen public static final String KEY_TREAT_UP_AS_BACK = "treat-up-as-back"; 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private MoviePlayer mPlayer; 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private boolean mFinishOnCompletion; 62e6e4beb069778fafd053552287e36304df5626ebRay Chen private Uri mUri; 63a3871050845b4921379add2b126add3cfbab1109Ray Chen private boolean mTreatUpAsBack; 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 657a5e1e771ae58241f3a2be36f23025f282032261Owen Lin @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 667a5e1e771ae58241f3a2be36f23025f282032261Owen Lin private void setSystemUiVisibility(View rootView) { 677a5e1e771ae58241f3a2be36f23025f282032261Owen Lin if (ApiHelper.HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE) { 687a5e1e771ae58241f3a2be36f23025f282032261Owen Lin rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 697a5e1e771ae58241f3a2be36f23025f282032261Owen Lin | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 707a5e1e771ae58241f3a2be36f23025f282032261Owen Lin | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); 717a5e1e771ae58241f3a2be36f23025f282032261Owen Lin } 727a5e1e771ae58241f3a2be36f23025f282032261Owen Lin } 737a5e1e771ae58241f3a2be36f23025f282032261Owen Lin 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onCreate(Bundle savedInstanceState) { 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onCreate(savedInstanceState); 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 782abaaf7caa9a83ba1ea759868aabde7f21387184John Reck requestWindowFeature(Window.FEATURE_ACTION_BAR); 792abaaf7caa9a83ba1ea759868aabde7f21387184John Reck requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin setContentView(R.layout.movie_view); 82fb55994c78d7b6af919d45ab015f5dc0a8665ac8Chih-Chung Chang View rootView = findViewById(R.id.movie_view_root); 837a5e1e771ae58241f3a2be36f23025f282032261Owen Lin 847a5e1e771ae58241f3a2be36f23025f282032261Owen Lin setSystemUiVisibility(rootView); 857a5e1e771ae58241f3a2be36f23025f282032261Owen Lin 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Intent intent = getIntent(); 87bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang initializeActionBar(intent); 88209a9163d4e8cee0bfe162ae598ef40e6051479cChih-Chung Chang mFinishOnCompletion = intent.getBooleanExtra( 89209a9163d4e8cee0bfe162ae598ef40e6051479cChih-Chung Chang MediaStore.EXTRA_FINISH_ON_COMPLETION, true); 90a3871050845b4921379add2b126add3cfbab1109Ray Chen mTreatUpAsBack = intent.getBooleanExtra(KEY_TREAT_UP_AS_BACK, false); 91209a9163d4e8cee0bfe162ae598ef40e6051479cChih-Chung Chang mPlayer = new MoviePlayer(rootView, this, intent.getData(), savedInstanceState, 92209a9163d4e8cee0bfe162ae598ef40e6051479cChih-Chung Chang !mFinishOnCompletion) { 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onCompletion() { 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (mFinishOnCompletion) { 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin finish(); 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin }; 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (intent.hasExtra(MediaStore.EXTRA_SCREEN_ORIENTATION)) { 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int orientation = intent.getIntExtra( 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin MediaStore.EXTRA_SCREEN_ORIENTATION, 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (orientation != getRequestedOrientation()) { 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin setRequestedOrientation(orientation); 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Window win = getWindow(); 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin WindowManager.LayoutParams winParams = win.getAttributes(); 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin winParams.buttonBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF; 1118176012eeb96bb167ef7c7ba2d02f82b646766f0Chih-Chung Chang winParams.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin win.setAttributes(winParams); 1135dd57a27b013e5019d727d8badb604f319222ddfOwen Lin 1145dd57a27b013e5019d727d8badb604f319222ddfOwen Lin // We set the background in the theme to have the launching animation. 1155dd57a27b013e5019d727d8badb604f319222ddfOwen Lin // But for the performance (and battery), we remove the background here. 1165dd57a27b013e5019d727d8badb604f319222ddfOwen Lin win.setBackgroundDrawable(null); 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 119cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin private void setActionBarLogoFromIntent(Intent intent) { 1208a861a02136d15b45b9dbdc80e4f3bcc9de057c8Owen Lin Bitmap logo = intent.getParcelableExtra(KEY_LOGO_BITMAP); 1218a861a02136d15b45b9dbdc80e4f3bcc9de057c8Owen Lin if (logo != null) { 1222abaaf7caa9a83ba1ea759868aabde7f21387184John Reck getActionBar().setLogo( 1238a861a02136d15b45b9dbdc80e4f3bcc9de057c8Owen Lin new BitmapDrawable(getResources(), logo)); 124cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin } 125cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin } 126cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin 127bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang private void initializeActionBar(Intent intent) { 128143594f5a26cf68520ca4712435739d2ada339a3Pin Ting mUri = intent.getData(); 1292abaaf7caa9a83ba1ea759868aabde7f21387184John Reck final ActionBar actionBar = getActionBar(); 1304ea5c27007e38fa8583add4bacf268ba67b9f0adJohn Reck if (actionBar == null) { 1314ea5c27007e38fa8583add4bacf268ba67b9f0adJohn Reck return; 1324ea5c27007e38fa8583add4bacf268ba67b9f0adJohn Reck } 133cc8e7ab7ae0912186beff20e7f042fd6c1e78b35Owen Lin setActionBarLogoFromIntent(intent); 134b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin actionBar.setDisplayOptions( 135b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ActionBar.DISPLAY_HOME_AS_UP, 136b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ActionBar.DISPLAY_HOME_AS_UP); 137143594f5a26cf68520ca4712435739d2ada339a3Pin Ting 1384ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting String title = intent.getStringExtra(Intent.EXTRA_TITLE); 1394ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting if (title != null) { 1404ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting actionBar.setTitle(title); 1414ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } else { 1424ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting // Displays the filename as title, reading the filename from the 1434ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting // interface: {@link android.provider.OpenableColumns#DISPLAY_NAME}. 1444ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting AsyncQueryHandler queryHandler = 1454ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting new AsyncQueryHandler(getContentResolver()) { 1464ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting @Override 1474ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting protected void onQueryComplete(int token, Object cookie, 1484ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting Cursor cursor) { 1494ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting try { 1504ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting if ((cursor != null) && cursor.moveToFirst()) { 1514ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting String displayName = cursor.getString(0); 1524ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting 1534ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting // Just show empty title if other apps don't set 1544ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting // DISPLAY_NAME 1554ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting actionBar.setTitle((displayName == null) ? "" : 1564ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting displayName); 1574ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } 1584ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } finally { 1594ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting Utils.closeSilently(cursor); 1604ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } 1614ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } 1624ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting }; 1634ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting queryHandler.startQuery(0, null, mUri, 1644ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting new String[] {OpenableColumns.DISPLAY_NAME}, null, null, 1654ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting null); 1664ba06f02e9182160ce155871cbd088919b0ac0c6Pin Ting } 167bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang } 168bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang 169bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang @Override 170e6e4beb069778fafd053552287e36304df5626ebRay Chen public boolean onCreateOptionsMenu(Menu menu) { 171e6e4beb069778fafd053552287e36304df5626ebRay Chen super.onCreateOptionsMenu(menu); 1722abaaf7caa9a83ba1ea759868aabde7f21387184John Reck getMenuInflater().inflate(R.menu.movie, menu); 1738a861a02136d15b45b9dbdc80e4f3bcc9de057c8Owen Lin 174be055bc0318828029a4bda0e31e9d8e3ce17ca4bOwen Lin // Document says EXTRA_STREAM should be a content: Uri 175be055bc0318828029a4bda0e31e9d8e3ce17ca4bOwen Lin // So, we only share the video if it's "content:". 176b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin MenuItem shareItem = menu.findItem(R.id.action_share); 177fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li if (ContentResolver.SCHEME_CONTENT.equals(mUri.getScheme())) { 178b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin shareItem.setVisible(true); 179b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin ((ShareActionProvider) shareItem.getActionProvider()) 180b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin .setShareIntent(createShareIntent()); 181fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li } else { 182b21b8e58a604f6c701245d84b141b5b87663192bOwen Lin shareItem.setVisible(false); 183e6e4beb069778fafd053552287e36304df5626ebRay Chen } 1848a861a02136d15b45b9dbdc80e4f3bcc9de057c8Owen Lin return true; 185fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li } 186fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li 187fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li private Intent createShareIntent() { 188fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li Intent intent = new Intent(Intent.ACTION_SEND); 189fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li intent.setType("video/*"); 190fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li intent.putExtra(Intent.EXTRA_STREAM, mUri); 191fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li return intent; 192fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li } 193fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li 194e6e4beb069778fafd053552287e36304df5626ebRay Chen @Override 195bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang public boolean onOptionsItemSelected(MenuItem item) { 196fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li int id = item.getItemId(); 197fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li if (id == android.R.id.home) { 198a3871050845b4921379add2b126add3cfbab1109Ray Chen if (mTreatUpAsBack) { 199a3871050845b4921379add2b126add3cfbab1109Ray Chen finish(); 200a3871050845b4921379add2b126add3cfbab1109Ray Chen } else { 20106c027675948259368a902fd6f8c2ecac5db5167Mangesh Ghiware startActivity(new Intent(this, GalleryActivity.class)); 202a3871050845b4921379add2b126add3cfbab1109Ray Chen finish(); 203a3871050845b4921379add2b126add3cfbab1109Ray Chen } 204bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang return true; 205fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li } else if (id == R.id.action_share) { 206fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li startActivity(Intent.createChooser(createShareIntent(), 207fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li getString(R.string.share))); 208fb5571987f2555b04731b6f3e1c479efc16d542aWu-cheng Li return true; 209bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang } 210bb7d7b94c0454d9549b2c5da2977dcd49c1a3be5Chih-Chung Chang return false; 211f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 212f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 213f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 214f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onStart() { 215f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ((AudioManager) getSystemService(AUDIO_SERVICE)) 216f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin .requestAudioFocus(null, AudioManager.STREAM_MUSIC, 217f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 218f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onStart(); 219f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 220f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 221f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 222f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin protected void onStop() { 223f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin ((AudioManager) getSystemService(AUDIO_SERVICE)) 224f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin .abandonAudioFocus(null); 225f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onStop(); 226f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 227f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 228f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 229f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onPause() { 230f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mPlayer.onPause(); 231f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onPause(); 232f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 233f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 234f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 235f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onResume() { 236f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mPlayer.onResume(); 237f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onResume(); 238f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 239f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 240f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 241540e4698824654232f300992ed8c03b20c9d5946Owen Lin public void onSaveInstanceState(Bundle outState) { 242540e4698824654232f300992ed8c03b20c9d5946Owen Lin super.onSaveInstanceState(outState); 243540e4698824654232f300992ed8c03b20c9d5946Owen Lin mPlayer.onSaveInstanceState(outState); 244540e4698824654232f300992ed8c03b20c9d5946Owen Lin } 245540e4698824654232f300992ed8c03b20c9d5946Owen Lin 246540e4698824654232f300992ed8c03b20c9d5946Owen Lin @Override 247f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void onDestroy() { 248f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mPlayer.onDestroy(); 249f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super.onDestroy(); 250f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 251fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang 252fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang @Override 253fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang public boolean onKeyDown(int keyCode, KeyEvent event) { 254fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang return mPlayer.onKeyDown(keyCode, event) 255fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang || super.onKeyDown(keyCode, event); 256fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang } 257fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang 258fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang @Override 259fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang public boolean onKeyUp(int keyCode, KeyEvent event) { 260fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang return mPlayer.onKeyUp(keyCode, event) 261fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang || super.onKeyUp(keyCode, event); 262fc8c503d1351c6ee62d233a944f2bd5220e64a55Chih-Chung Chang } 263f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 264