1cc671dd3caac1d0cbf3f6999ab063c9ff1f297b2Dake Gu// CHECKSTYLE:OFF Generated code 24702556bfd15c9819a7b2af759aee0f719cd631fsusnata/* This file is auto-generated from VideoFragment.java. DO NOT MODIFY. */ 34702556bfd15c9819a7b2af759aee0f719cd631fsusnata 44702556bfd15c9819a7b2af759aee0f719cd631fsusnata/* 54702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Copyright (C) 2016 The Android Open Source Project 64702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 74702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 84702556bfd15c9819a7b2af759aee0f719cd631fsusnata * in compliance with the License. You may obtain a copy of the License at 94702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 104702556bfd15c9819a7b2af759aee0f719cd631fsusnata * http://www.apache.org/licenses/LICENSE-2.0 114702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 124702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Unless required by applicable law or agreed to in writing, software distributed under the License 134702556bfd15c9819a7b2af759aee0f719cd631fsusnata * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 144702556bfd15c9819a7b2af759aee0f719cd631fsusnata * or implied. See the License for the specific language governing permissions and limitations under 154702556bfd15c9819a7b2af759aee0f719cd631fsusnata * the License. 164702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 174702556bfd15c9819a7b2af759aee0f719cd631fsusnatapackage android.support.v17.leanback.app; 184702556bfd15c9819a7b2af759aee0f719cd631fsusnata 194702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.os.Bundle; 204702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.support.v17.leanback.R; 214702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.LayoutInflater; 224702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.SurfaceHolder; 234702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.SurfaceView; 244702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.View; 254702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.ViewGroup; 264702556bfd15c9819a7b2af759aee0f719cd631fsusnata 274702556bfd15c9819a7b2af759aee0f719cd631fsusnata/** 284702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Subclass of {@link PlaybackSupportFragment} that is responsible for providing a {@link SurfaceView} 294702556bfd15c9819a7b2af759aee0f719cd631fsusnata * and rendering video. 304702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 314702556bfd15c9819a7b2af759aee0f719cd631fsusnatapublic class VideoSupportFragment extends PlaybackSupportFragment { 32aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata static final int SURFACE_NOT_CREATED = 0; 33aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata static final int SURFACE_CREATED = 1; 34aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 35aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata SurfaceView mVideoSurface; 36aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata SurfaceHolder.Callback mMediaPlaybackCallback; 37aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 38aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata int mState = SURFACE_NOT_CREATED; 394702556bfd15c9819a7b2af759aee0f719cd631fsusnata 404702556bfd15c9819a7b2af759aee0f719cd631fsusnata @Override 414702556bfd15c9819a7b2af759aee0f719cd631fsusnata public View onCreateView( 424702556bfd15c9819a7b2af759aee0f719cd631fsusnata LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 43c2168ad5902b189f3c634e47cd956f99df17fbabsusnata ViewGroup root = (ViewGroup) super.onCreateView(inflater, container, savedInstanceState); 442452cde3b8d7cbe62f6eb2fbcbcf9a02448d6891Dake Gu mVideoSurface = (SurfaceView) LayoutInflater.from(getContext()).inflate( 45aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata R.layout.lb_video_surface, root, false); 46c2168ad5902b189f3c634e47cd956f99df17fbabsusnata root.addView(mVideoSurface, 0); 47aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mVideoSurface.getHolder().addCallback(new SurfaceHolder.Callback() { 48aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 49aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata @Override 50aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata public void surfaceCreated(SurfaceHolder holder) { 51aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata if (mMediaPlaybackCallback != null) { 52aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mMediaPlaybackCallback.surfaceCreated(holder); 53aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 54aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mState = SURFACE_CREATED; 55aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 56aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 57aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata @Override 58aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 59aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata if (mMediaPlaybackCallback != null) { 60aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mMediaPlaybackCallback.surfaceChanged(holder, format, width, height); 61aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 62aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 63aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 64aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata @Override 65aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata public void surfaceDestroyed(SurfaceHolder holder) { 66aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata if (mMediaPlaybackCallback != null) { 67aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mMediaPlaybackCallback.surfaceDestroyed(holder); 68aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 69aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mState = SURFACE_NOT_CREATED; 70aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 71aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata }); 724702556bfd15c9819a7b2af759aee0f719cd631fsusnata setBackgroundType(PlaybackSupportFragment.BG_LIGHT); 734702556bfd15c9819a7b2af759aee0f719cd631fsusnata return root; 744702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 754702556bfd15c9819a7b2af759aee0f719cd631fsusnata 764702556bfd15c9819a7b2af759aee0f719cd631fsusnata /** 774702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Adds {@link SurfaceHolder.Callback} to {@link android.view.SurfaceView}. 784702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 794702556bfd15c9819a7b2af759aee0f719cd631fsusnata public void setSurfaceHolderCallback(SurfaceHolder.Callback callback) { 804702556bfd15c9819a7b2af759aee0f719cd631fsusnata mMediaPlaybackCallback = callback; 81aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 82aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata if (callback != null) { 83aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata if (mState == SURFACE_CREATED) { 84aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata mMediaPlaybackCallback.surfaceCreated(mVideoSurface.getHolder()); 85aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 864702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 874702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 88aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata 893bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu @Override 903bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu protected void onVideoSizeChanged(int width, int height) { 913bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu int screenWidth = getView().getWidth(); 923bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu int screenHeight = getView().getHeight(); 933bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu 943bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu ViewGroup.LayoutParams p = mVideoSurface.getLayoutParams(); 953bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu if (screenWidth * height > width * screenHeight) { 963bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu // fit in screen height 973bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu p.height = screenHeight; 983bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu p.width = screenHeight * width / height; 993bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu } else { 1003bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu // fit in screen width 1013bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu p.width = screenWidth; 1023bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu p.height = screenWidth * height / width; 1033bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu } 1043bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu mVideoSurface.setLayoutParams(p); 1053bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu } 1063bcad88cbf4488e747d84893c35f2351b8f84afeDake Gu 107aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata /** 108aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata * Returns the surface view. 109aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata */ 110aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata public SurfaceView getSurfaceView() { 111aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata return mVideoSurface; 112aa49439ba6276137f94fcdc1bf4f69b78833dad6susnata } 113f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu 114f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu @Override 115f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu public void onDestroyView() { 116f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu mVideoSurface = null; 117f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu mState = SURFACE_NOT_CREATED; 118f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu super.onDestroyView(); 119f37579e64940bfdd642cc315f6347d60b5addd69Dake Gu } 1204702556bfd15c9819a7b2af759aee0f719cd631fsusnata} 121