1666ea1b28a76aeba74744148b15099254d918671Owen Lin/* 2666ea1b28a76aeba74744148b15099254d918671Owen Lin * Copyright (C) 2007 The Android Open Source Project 3666ea1b28a76aeba74744148b15099254d918671Owen Lin * 4666ea1b28a76aeba74744148b15099254d918671Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5666ea1b28a76aeba74744148b15099254d918671Owen Lin * you may not use this file except in compliance with the License. 6666ea1b28a76aeba74744148b15099254d918671Owen Lin * You may obtain a copy of the License at 7666ea1b28a76aeba74744148b15099254d918671Owen Lin * 8666ea1b28a76aeba74744148b15099254d918671Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9666ea1b28a76aeba74744148b15099254d918671Owen Lin * 10666ea1b28a76aeba74744148b15099254d918671Owen Lin * Unless required by applicable law or agreed to in writing, software 11666ea1b28a76aeba74744148b15099254d918671Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12666ea1b28a76aeba74744148b15099254d918671Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13666ea1b28a76aeba74744148b15099254d918671Owen Lin * See the License for the specific language governing permissions and 14666ea1b28a76aeba74744148b15099254d918671Owen Lin * limitations under the License. 15666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 16666ea1b28a76aeba74744148b15099254d918671Owen Lin 17666ea1b28a76aeba74744148b15099254d918671Owen Linpackage com.android.camera; 18666ea1b28a76aeba74744148b15099254d918671Owen Lin 19d6c2fb7a38fcdb58742fcfffd67a4594487ec71cOwen Linimport com.android.gallery.R; 20d6c2fb7a38fcdb58742fcfffd67a4594487ec71cOwen Lin 21666ea1b28a76aeba74744148b15099254d918671Owen Lin 22666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.app.Activity; 23666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.content.Intent; 24666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.content.pm.ActivityInfo; 25666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.os.Bundle; 26666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.provider.MediaStore; 27666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.util.Log; 28666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.view.View; 29666ea1b28a76aeba74744148b15099254d918671Owen Lin 30666ea1b28a76aeba74744148b15099254d918671Owen Lin/** 31666ea1b28a76aeba74744148b15099254d918671Owen Lin * This activity plays a video from a specified URI. 32666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 338aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Linpublic class MovieView extends NoSearchActivity { 34666ea1b28a76aeba74744148b15099254d918671Owen Lin private static final String TAG = "MovieView"; 35666ea1b28a76aeba74744148b15099254d918671Owen Lin 36666ea1b28a76aeba74744148b15099254d918671Owen Lin private MovieViewControl mControl; 37666ea1b28a76aeba74744148b15099254d918671Owen Lin private boolean mFinishOnCompletion; 388aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin private boolean mResumed = false; // Whether this activity has been resumed. 398aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin private boolean mFocused = false; // Whether this window has focus. 408aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin private boolean mControlResumed = false; // Whether the MovieViewControl is resumed. 41666ea1b28a76aeba74744148b15099254d918671Owen Lin 42666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 43666ea1b28a76aeba74744148b15099254d918671Owen Lin public void onCreate(Bundle icicle) { 44666ea1b28a76aeba74744148b15099254d918671Owen Lin super.onCreate(icicle); 45666ea1b28a76aeba74744148b15099254d918671Owen Lin setContentView(R.layout.movie_view); 46666ea1b28a76aeba74744148b15099254d918671Owen Lin View rootView = findViewById(R.id.root); 47666ea1b28a76aeba74744148b15099254d918671Owen Lin Intent intent = getIntent(); 48666ea1b28a76aeba74744148b15099254d918671Owen Lin mControl = new MovieViewControl(rootView, this, intent.getData()) { 49666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 50666ea1b28a76aeba74744148b15099254d918671Owen Lin public void onCompletion() { 51666ea1b28a76aeba74744148b15099254d918671Owen Lin if (mFinishOnCompletion) { 52666ea1b28a76aeba74744148b15099254d918671Owen Lin finish(); 53666ea1b28a76aeba74744148b15099254d918671Owen Lin } 54666ea1b28a76aeba74744148b15099254d918671Owen Lin } 55666ea1b28a76aeba74744148b15099254d918671Owen Lin }; 56666ea1b28a76aeba74744148b15099254d918671Owen Lin if (intent.hasExtra(MediaStore.EXTRA_SCREEN_ORIENTATION)) { 57666ea1b28a76aeba74744148b15099254d918671Owen Lin int orientation = intent.getIntExtra( 58666ea1b28a76aeba74744148b15099254d918671Owen Lin MediaStore.EXTRA_SCREEN_ORIENTATION, 59666ea1b28a76aeba74744148b15099254d918671Owen Lin ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 60666ea1b28a76aeba74744148b15099254d918671Owen Lin if (orientation != getRequestedOrientation()) { 61666ea1b28a76aeba74744148b15099254d918671Owen Lin setRequestedOrientation(orientation); 62666ea1b28a76aeba74744148b15099254d918671Owen Lin } 63666ea1b28a76aeba74744148b15099254d918671Owen Lin } 64666ea1b28a76aeba74744148b15099254d918671Owen Lin mFinishOnCompletion = intent.getBooleanExtra( 65666ea1b28a76aeba74744148b15099254d918671Owen Lin MediaStore.EXTRA_FINISH_ON_COMPLETION, true); 66666ea1b28a76aeba74744148b15099254d918671Owen Lin } 67666ea1b28a76aeba74744148b15099254d918671Owen Lin 68666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 69666ea1b28a76aeba74744148b15099254d918671Owen Lin public void onPause() { 70666ea1b28a76aeba74744148b15099254d918671Owen Lin super.onPause(); 718aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mResumed = false; 728aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin if (mControlResumed) { 738aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mControl.onPause(); 748aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mControlResumed = false; 758aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin } 768aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin } 778aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin 788aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin @Override 798aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin public void onResume() { 808aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin super.onResume(); 818aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mResumed = true; 828aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin if (mFocused && mResumed && !mControlResumed) { 838aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mControl.onResume(); 848aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mControlResumed = true; 858aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin } 86666ea1b28a76aeba74744148b15099254d918671Owen Lin } 87666ea1b28a76aeba74744148b15099254d918671Owen Lin 88666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 89666ea1b28a76aeba74744148b15099254d918671Owen Lin public void onWindowFocusChanged(boolean hasFocus) { 908aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mFocused = hasFocus; 918aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin if (mFocused && mResumed && !mControlResumed) { 92666ea1b28a76aeba74744148b15099254d918671Owen Lin mControl.onResume(); 938aa3fbcf9a5a0d11acd48861f5167073e3554980Owen Lin mControlResumed = true; 94666ea1b28a76aeba74744148b15099254d918671Owen Lin } 95666ea1b28a76aeba74744148b15099254d918671Owen Lin } 96666ea1b28a76aeba74744148b15099254d918671Owen Lin} 97