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