158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell/*
258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * Copyright (C) 2016 The Android Open Source Project
358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell *
458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * Licensed under the Apache License, Version 2.0 (the "License");
558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * you may not use this file except in compliance with the License.
658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * You may obtain a copy of the License at
758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell *
858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell *      http://www.apache.org/licenses/LICENSE-2.0
958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell *
1058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * Unless required by applicable law or agreed to in writing, software
1158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * distributed under the License is distributed on an "AS IS" BASIS,
1258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * See the License for the specific language governing permissions and
1458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell * limitations under the License
1558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell */
1658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
1758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellpackage com.google.android.leanbackjank.ui;
1858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
1958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.app.Activity;
2058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.content.Intent;
2158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.media.MediaPlayer;
2258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.media.MediaPlayer.OnPreparedListener;
2358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.net.Uri;
24a3eaac19490539262eff7832eff880566c57cafcAurimas Liutikasimport android.os.Build;
2558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.os.Bundle;
2658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.view.Window;
2758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.view.WindowManager;
2858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellimport android.widget.VideoView;
2958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
3058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassellpublic class VideoActivity extends Activity {
3158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
3258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    private VideoView mVideoView;
3358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
3458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    @Override
3558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    protected void onCreate(Bundle savedInstanceState) {
3658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        super.onCreate(savedInstanceState);
3758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
3858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        requestWindowFeature(Window.FEATURE_NO_TITLE);
3958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
4058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell                WindowManager.LayoutParams.FLAG_FULLSCREEN);
4158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
4258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        mVideoView = new VideoView(this);
4358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        mVideoView.setOnPreparedListener(new OnPreparedListener() {
4458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            @Override
4558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            public void onPrepared(MediaPlayer mp) {
4658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell                mp.setLooping(true);
4758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            }
4858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        });
4958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        setContentView(mVideoView);
5058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
5158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        if (checkIntent(getIntent())) {
52a3eaac19490539262eff7832eff880566c57cafcAurimas Liutikas            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
53a3eaac19490539262eff7832eff880566c57cafcAurimas Liutikas                enterPictureInPictureMode();
54a3eaac19490539262eff7832eff880566c57cafcAurimas Liutikas            }
5558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        }
5658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    }
5758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
5858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    private void playVideo(Uri uri) {
5958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        mVideoView.setVideoURI(uri);
6058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        mVideoView.start();
6158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    }
6258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
6358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    private boolean checkIntent(Intent intent) {
6458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
6558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            Uri uri = intent.getData();
6658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            playVideo(uri);
6758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            return true;
6858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        } else {
6958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            finish();
7058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            return false;
7158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        }
7258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    }
7358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
7458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    @Override
7558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    protected void onNewIntent(Intent intent) {
7658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        super.onNewIntent(intent);
7758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        checkIntent(intent);
7858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    }
7958b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell
8058b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    @Override
8158b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    protected void onStop() {
8258b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        if (mVideoView != null) {
8358b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell            mVideoView.stopPlayback();
8458b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        }
8558b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        super.onStop();
8658b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell        finish();
8758b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell    }
8858b7bbb83053e664ada2e1ace49f8960dfecdbfdBryan Cassell}
89