VideoFragment.java revision c2168ad5902b189f3c634e47cd956f99df17fbab
14702556bfd15c9819a7b2af759aee0f719cd631fsusnata/* 24702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Copyright (C) 2016 The Android Open Source Project 34702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 44702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 54702556bfd15c9819a7b2af759aee0f719cd631fsusnata * in compliance with the License. You may obtain a copy of the License at 64702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 74702556bfd15c9819a7b2af759aee0f719cd631fsusnata * http://www.apache.org/licenses/LICENSE-2.0 84702556bfd15c9819a7b2af759aee0f719cd631fsusnata * 94702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Unless required by applicable law or agreed to in writing, software distributed under the License 104702556bfd15c9819a7b2af759aee0f719cd631fsusnata * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 114702556bfd15c9819a7b2af759aee0f719cd631fsusnata * or implied. See the License for the specific language governing permissions and limitations under 124702556bfd15c9819a7b2af759aee0f719cd631fsusnata * the License. 134702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 144702556bfd15c9819a7b2af759aee0f719cd631fsusnatapackage android.support.v17.leanback.app; 154702556bfd15c9819a7b2af759aee0f719cd631fsusnata 164702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.os.Bundle; 174702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.support.v17.leanback.R; 184702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.LayoutInflater; 194702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.SurfaceHolder; 204702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.SurfaceView; 214702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.View; 224702556bfd15c9819a7b2af759aee0f719cd631fsusnataimport android.view.ViewGroup; 234702556bfd15c9819a7b2af759aee0f719cd631fsusnata 244702556bfd15c9819a7b2af759aee0f719cd631fsusnata/** 254702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Subclass of {@link PlaybackFragment} that is responsible for providing a {@link SurfaceView} 264702556bfd15c9819a7b2af759aee0f719cd631fsusnata * and rendering video. 274702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 284702556bfd15c9819a7b2af759aee0f719cd631fsusnatapublic class VideoFragment extends PlaybackFragment { 294702556bfd15c9819a7b2af759aee0f719cd631fsusnata private SurfaceView mVideoSurface; 304702556bfd15c9819a7b2af759aee0f719cd631fsusnata private SurfaceHolder.Callback mMediaPlaybackCallback; 314702556bfd15c9819a7b2af759aee0f719cd631fsusnata 324702556bfd15c9819a7b2af759aee0f719cd631fsusnata @Override 334702556bfd15c9819a7b2af759aee0f719cd631fsusnata public View onCreateView( 344702556bfd15c9819a7b2af759aee0f719cd631fsusnata LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 35c2168ad5902b189f3c634e47cd956f99df17fbabsusnata ViewGroup root = (ViewGroup) super.onCreateView(inflater, container, savedInstanceState); 364702556bfd15c9819a7b2af759aee0f719cd631fsusnata mVideoSurface = (SurfaceView) inflater.inflate(R.layout.lb_video_surface, container, false); 37c2168ad5902b189f3c634e47cd956f99df17fbabsusnata root.addView(mVideoSurface, 0); 382582363a9197a4f30277557330177e45b2aa0cd5susnata if (mMediaPlaybackCallback != null) { 392582363a9197a4f30277557330177e45b2aa0cd5susnata mVideoSurface.getHolder().addCallback(mMediaPlaybackCallback); 402582363a9197a4f30277557330177e45b2aa0cd5susnata } 414702556bfd15c9819a7b2af759aee0f719cd631fsusnata setBackgroundType(PlaybackFragment.BG_LIGHT); 424702556bfd15c9819a7b2af759aee0f719cd631fsusnata return root; 434702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 444702556bfd15c9819a7b2af759aee0f719cd631fsusnata 454702556bfd15c9819a7b2af759aee0f719cd631fsusnata /** 464702556bfd15c9819a7b2af759aee0f719cd631fsusnata * Adds {@link SurfaceHolder.Callback} to {@link android.view.SurfaceView}. 474702556bfd15c9819a7b2af759aee0f719cd631fsusnata */ 484702556bfd15c9819a7b2af759aee0f719cd631fsusnata public void setSurfaceHolderCallback(SurfaceHolder.Callback callback) { 494702556bfd15c9819a7b2af759aee0f719cd631fsusnata if (mVideoSurface != null && mMediaPlaybackCallback != null) { 504702556bfd15c9819a7b2af759aee0f719cd631fsusnata mVideoSurface.getHolder().removeCallback(mMediaPlaybackCallback); 514702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 524702556bfd15c9819a7b2af759aee0f719cd631fsusnata 534702556bfd15c9819a7b2af759aee0f719cd631fsusnata mMediaPlaybackCallback = callback; 544702556bfd15c9819a7b2af759aee0f719cd631fsusnata if (mVideoSurface != null && mMediaPlaybackCallback != null) { 554702556bfd15c9819a7b2af759aee0f719cd631fsusnata mVideoSurface.getHolder().addCallback(mMediaPlaybackCallback); 564702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 574702556bfd15c9819a7b2af759aee0f719cd631fsusnata } 584702556bfd15c9819a7b2af759aee0f719cd631fsusnata} 59