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