1 // CHECKSTYLE:OFF Generated code
2 /* This file is auto-generated from PlaybackTransportControlFragment.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.util.Log;
26 
27 import androidx.leanback.app.PlaybackSupportFragmentGlueHost;
28 import androidx.leanback.widget.Action;
29 import androidx.leanback.widget.ArrayObjectAdapter;
30 import androidx.leanback.widget.ClassPresenterSelector;
31 import androidx.leanback.widget.HeaderItem;
32 import androidx.leanback.widget.ListRow;
33 import androidx.leanback.widget.ListRowPresenter;
34 import androidx.leanback.widget.SparseArrayObjectAdapter;
35 
36 import org.jspecify.annotations.NonNull;
37 
38 /**
39  * Example of PlaybackSupportFragment working with a PlaybackControlGlue.
40  */
41 public class PlaybackTransportControlSupportFragment
42         extends androidx.leanback.app.PlaybackSupportFragment
43         implements PlaybackTransportControlSupportActivity.PictureInPictureListener {
44     private static final String TAG = "TransportFragment";
45 
46     /**
47      * Change this to choose a different overlay background.
48      */
49     private static final int BACKGROUND_TYPE = BG_DARK;
50 
51     /**
52      * Change the number of related content rows.
53      */
54     private static final int RELATED_CONTENT_ROWS = 3;
55 
56     private static final int ROW_CONTROLS = 0;
57 
58     private PlaybackTransportControlGlueSample mGlue;
59 
60     @Override
getAdapter()61     public SparseArrayObjectAdapter getAdapter() {
62         return (SparseArrayObjectAdapter) super.getAdapter();
63     }
64 
65     @Override
onCreate(Bundle savedInstanceState)66     public void onCreate(Bundle savedInstanceState) {
67         Log.i(TAG, "onCreate");
68         super.onCreate(savedInstanceState);
69 
70         setBackgroundType(BACKGROUND_TYPE);
71 
72         createComponents(getActivity());
73     }
74 
createComponents(Context context)75     private void createComponents(Context context) {
76         mGlue = new PlaybackTransportControlGlueSample(context, new PlayerAdapter()) {
77             @Override
78             public void onActionClicked(@NonNull Action action) {
79                 if (action.getId() == androidx.leanback.R.id.lb_control_picture_in_picture) {
80                     if (Build.VERSION.SDK_INT >= 24) {
81                         getActivity().enterPictureInPictureMode();
82                     }
83                     return;
84                 }
85                 super.onActionClicked(action);
86             }
87 
88         };
89 
90         mGlue.setTitle("Title");
91         mGlue.setSubtitle("Android developer");
92         mGlue.setHost(new PlaybackSupportFragmentGlueHost(this));
93         mGlue.setSeekProvider(new PlaybackSeekDataProviderSample(
94                 PlayerAdapter.FAUX_DURATION, 100));
95 
96         ClassPresenterSelector selector = new ClassPresenterSelector();
97         selector.addClassPresenter(ListRow.class, new ListRowPresenter());
98         setAdapter(new SparseArrayObjectAdapter(selector));
99 
100         // Add related content rows
101         for (int i = 0; i < RELATED_CONTENT_ROWS; ++i) {
102             ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());
103             listRowAdapter.add("Some related content");
104             listRowAdapter.add("Other related content");
105             HeaderItem header = new HeaderItem(i, "Row " + i);
106             getAdapter().set(ROW_CONTROLS + 1 + i, new ListRow(header, listRowAdapter));
107         }
108     }
109 
110     @Override
onStart()111     public void onStart() {
112         super.onStart();
113         ((PlaybackTransportControlSupportActivity) getActivity()).registerPictureInPictureListener(this);
114     }
115 
116     @Override
onStop()117     public void onStop() {
118         ((PlaybackTransportControlSupportActivity) getActivity()).unregisterPictureInPictureListener(this);
119         super.onStop();
120     }
121 
122     @Override
onPictureInPictureModeChanged(boolean isInPictureInPictureMode)123     public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
124         if (isInPictureInPictureMode) {
125             // Hide the controls in picture-in-picture mode.
126             setControlsOverlayAutoHideEnabled(true);
127             hideControlsOverlay(true);
128         } else {
129             setControlsOverlayAutoHideEnabled(mGlue.isPlaying());
130         }
131     }
132 }
133