• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // CHECKSTYLE:OFF Generated code
2 /* This file is auto-generated from PlaybackFragment.java.  DO NOT MODIFY. */
3 
4 /*
5  * Copyright (C) 2016 The Android Open Source Project
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 package com.example.android.leanback;
21 
22 import android.content.Context;
23 import android.os.Build;
24 import android.os.Bundle;
25 import android.support.v17.leanback.app.PlaybackSupportFragmentGlueHost;
26 import android.support.v17.leanback.widget.Action;
27 import android.support.v17.leanback.widget.ArrayObjectAdapter;
28 import android.support.v17.leanback.widget.ClassPresenterSelector;
29 import android.support.v17.leanback.widget.HeaderItem;
30 import android.support.v17.leanback.widget.ListRow;
31 import android.support.v17.leanback.widget.ListRowPresenter;
32 import android.support.v17.leanback.widget.SparseArrayObjectAdapter;
33 import android.util.Log;
34 
35 /**
36  * Example of PlaybackSupportFragment working with a PlaybackControlGlue.
37  */
38 public class PlaybackSupportFragment
39         extends android.support.v17.leanback.app.PlaybackSupportFragment
40         implements PlaybackSupportActivity.PictureInPictureListener {
41     private static final String TAG = "leanback.PlaybackControlsFragment";
42 
43     /**
44      * Change this to choose a different overlay background.
45      */
46     private static final int BACKGROUND_TYPE = PlaybackSupportFragment.BG_LIGHT;
47 
48     /**
49      * Change the number of related content rows.
50      */
51     private static final int RELATED_CONTENT_ROWS = 3;
52 
53     /**
54      * Change this to select hidden
55      */
56     private static final boolean SECONDARY_HIDDEN = false;
57 
58     private static final int ROW_CONTROLS = 0;
59 
60     private PlaybackControlGlue mGlue;
61 
62     @Override
getAdapter()63     public SparseArrayObjectAdapter getAdapter() {
64         return (SparseArrayObjectAdapter) super.getAdapter();
65     }
66 
67     @Override
onCreate(Bundle savedInstanceState)68     public void onCreate(Bundle savedInstanceState) {
69         Log.i(TAG, "onCreate");
70         super.onCreate(savedInstanceState);
71 
72         setBackgroundType(BACKGROUND_TYPE);
73 
74         createComponents(getActivity());
75     }
76 
createComponents(Context context)77     private void createComponents(Context context) {
78         mGlue = new PlaybackControlGlue(context) {
79             @Override
80             public int getUpdatePeriod() {
81                 long totalTime = getControlsRow().getDuration();
82                 if (getView() == null || getView().getWidth() == 0 || totalTime <= 0) {
83                     return 1000;
84                 }
85                 return 16;
86             }
87 
88             @Override
89             public void onActionClicked(Action action) {
90                 if (action.getId() == R.id.lb_control_picture_in_picture) {
91                     if (Build.VERSION.SDK_INT >= 24) {
92                         getActivity().enterPictureInPictureMode();
93                     }
94                     return;
95                 }
96                 super.onActionClicked(action);
97             }
98 
99             @Override
100             protected void onCreateControlsRowAndPresenter() {
101                 super.onCreateControlsRowAndPresenter();
102                 getControlsRowPresenter().setSecondaryActionsHidden(SECONDARY_HIDDEN);
103             }
104         };
105 
106         mGlue.setHost(new PlaybackSupportFragmentGlueHost(this));
107         ClassPresenterSelector classPresenterSelector = new ClassPresenterSelector();
108         classPresenterSelector.addClassPresenter(ListRow.class, new ListRowPresenter());
109 
110         setAdapter(new SparseArrayObjectAdapter(classPresenterSelector));
111 
112         // Add related content rows
113         for (int i = 0; i < RELATED_CONTENT_ROWS; ++i) {
114             ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());
115             listRowAdapter.add("Some related content");
116             listRowAdapter.add("Other related content");
117             HeaderItem header = new HeaderItem(i, "Row " + i);
118             getAdapter().set(ROW_CONTROLS + 1 + i, new ListRow(header, listRowAdapter));
119         }
120     }
121 
122     @Override
onStart()123     public void onStart() {
124         super.onStart();
125         ((PlaybackSupportActivity) getActivity()).registerPictureInPictureListener(this);
126     }
127 
128     @Override
onStop()129     public void onStop() {
130         ((PlaybackSupportActivity) getActivity()).unregisterPictureInPictureListener(this);
131         super.onStop();
132     }
133 
134     @Override
onPictureInPictureModeChanged(boolean isInPictureInPictureMode)135     public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
136         if (isInPictureInPictureMode) {
137             // Hide the controls in picture-in-picture mode.
138             setFadingEnabled(true);
139             fadeOut();
140         } else {
141             setFadingEnabled(mGlue.isPlaying());
142         }
143     }
144 }
145