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