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