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