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