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