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
20package com.example.android.leanback;
21
22import android.content.Context;
23import android.os.Build;
24import android.os.Bundle;
25import android.support.v17.leanback.app.PlaybackSupportFragmentGlueHost;
26import android.support.v17.leanback.widget.Action;
27import android.support.v17.leanback.widget.ArrayObjectAdapter;
28import android.support.v17.leanback.widget.ClassPresenterSelector;
29import android.support.v17.leanback.widget.HeaderItem;
30import android.support.v17.leanback.widget.ListRow;
31import android.support.v17.leanback.widget.ListRowPresenter;
32import android.support.v17.leanback.widget.SparseArrayObjectAdapter;
33import android.util.Log;
34
35/**
36 * Example of PlaybackSupportFragment working with a PlaybackControlGlue.
37 */
38public 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
63    public SparseArrayObjectAdapter getAdapter() {
64        return (SparseArrayObjectAdapter) super.getAdapter();
65    }
66
67    @Override
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
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
123    public void onStart() {
124        super.onStart();
125        ((PlaybackSupportActivity) getActivity()).registerPictureInPictureListener(this);
126    }
127
128    @Override
129    public void onStop() {
130        ((PlaybackSupportActivity) getActivity()).unregisterPictureInPictureListener(this);
131        super.onStop();
132    }
133
134    @Override
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