blob: 95493b38bbc0a27dbf3de07dbd820420d51eb2c6 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.support.v17.leanback.widget;
import android.graphics.Bitmap;
/**
* Class to be implemented by app to provide seeking data and thumbnails to UI.
*/
public class PlaybackSeekDataProvider {
/**
* Client to receive result for {@link PlaybackSeekDataProvider#getThumbnail(int,
* ResultCallback)}.
*/
public static class ResultCallback {
/**
* Client of thumbnail bitmap being loaded. PlaybackSeekDataProvider must invoke this method
* in UI thread such as in {@link android.os.AsyncTask#onPostExecute(Object)}.
*
* @param bitmap Result of bitmap.
* @param index Index of {@link #getSeekPositions()}.
*/
public void onThumbnailLoaded(Bitmap bitmap, int index) {
}
}
/**
* Get a list of sorted seek positions. The positions should not change after user starts
* seeking.
*
* @return A list of sorted seek positions.
*/
public long[] getSeekPositions() {
return null;
}
/**
* Called to get thumbnail bitmap. This method is called on UI thread. When provider finds
* cache bitmap, it may invoke {@link ResultCallback#onThumbnailLoaded(Bitmap, int)}
* immediately. Provider may start background thread and invoke
* {@link ResultCallback#onThumbnailLoaded(Bitmap, int)} later in UI thread. The method might
* be called multiple times for the same position, PlaybackSeekDataProvider must guarantee
* to replace pending {@link ResultCallback} with the new one. When seeking right,
* getThumbnail() will be called with increasing index; when seeking left, getThumbnail() will
* be called with decreasing index. The increment of index can be used by subclass to determine
* prefetch direction.
*
* @param index Index of position in {@link #getSeekPositions()}.
* @param callback The callback to receive the result on UI thread. It may be called within
* getThumbnail() if hit cache directly.
*/
public void getThumbnail(int index, ResultCallback callback) {
}
/**
* Called when seek stops, Provider should cancel pending requests for the thumbnails.
*/
public void reset() {
}
}