mirror of
https://github.com/samsonjs/media.git
synced 2026-03-25 09:25:53 +00:00
138 lines
4.3 KiB
Java
138 lines
4.3 KiB
Java
/*
|
|
* 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 androidx.media3.ui;
|
|
|
|
import android.view.View;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.media3.common.util.UnstableApi;
|
|
|
|
/**
|
|
* Interface for time bar views that can display a playback position, buffered position, duration
|
|
* and ad markers, and that have a listener for scrubbing (seeking) events.
|
|
*/
|
|
@UnstableApi
|
|
public interface TimeBar {
|
|
|
|
/**
|
|
* Adds a listener for scrubbing events.
|
|
*
|
|
* @param listener The listener to add.
|
|
*/
|
|
void addListener(OnScrubListener listener);
|
|
|
|
/**
|
|
* Removes a listener for scrubbing events.
|
|
*
|
|
* @param listener The listener to remove.
|
|
*/
|
|
void removeListener(OnScrubListener listener);
|
|
|
|
/**
|
|
* @see View#isEnabled()
|
|
*/
|
|
void setEnabled(boolean enabled);
|
|
|
|
/**
|
|
* Sets the position increment for key presses and accessibility actions, in milliseconds.
|
|
*
|
|
* <p>Clears any increment specified in a preceding call to {@link #setKeyCountIncrement(int)}.
|
|
*
|
|
* @param time The time increment, in milliseconds.
|
|
*/
|
|
void setKeyTimeIncrement(long time);
|
|
|
|
/**
|
|
* Sets the position increment for key presses and accessibility actions, as a number of
|
|
* increments that divide the duration of the media. For example, passing 20 will cause key
|
|
* presses to increment/decrement the position by 1/20th of the duration (if known).
|
|
*
|
|
* <p>Clears any increment specified in a preceding call to {@link #setKeyTimeIncrement(long)}.
|
|
*
|
|
* @param count The number of increments that divide the duration of the media.
|
|
*/
|
|
void setKeyCountIncrement(int count);
|
|
|
|
/**
|
|
* Sets the current position.
|
|
*
|
|
* @param position The current position to show, in milliseconds.
|
|
*/
|
|
void setPosition(long position);
|
|
|
|
/**
|
|
* Sets the buffered position.
|
|
*
|
|
* @param bufferedPosition The current buffered position to show, in milliseconds.
|
|
*/
|
|
void setBufferedPosition(long bufferedPosition);
|
|
|
|
/**
|
|
* Sets the duration.
|
|
*
|
|
* @param duration The duration to show, in milliseconds.
|
|
*/
|
|
void setDuration(long duration);
|
|
|
|
/**
|
|
* Returns the preferred delay in milliseconds of media time after which the time bar position
|
|
* should be updated.
|
|
*
|
|
* @return Preferred delay, in milliseconds of media time.
|
|
*/
|
|
long getPreferredUpdateDelay();
|
|
|
|
/**
|
|
* Sets the times of ad groups and whether each ad group has been played.
|
|
*
|
|
* @param adGroupTimesMs An array where the first {@code adGroupCount} elements are the times of
|
|
* ad groups in milliseconds. May be {@code null} if there are no ad groups.
|
|
* @param playedAdGroups An array where the first {@code adGroupCount} elements indicate whether
|
|
* the corresponding ad groups have been played. May be {@code null} if there are no ad
|
|
* groups.
|
|
* @param adGroupCount The number of ad groups.
|
|
*/
|
|
void setAdGroupTimesMs(
|
|
@Nullable long[] adGroupTimesMs, @Nullable boolean[] playedAdGroups, int adGroupCount);
|
|
|
|
/** Listener for scrubbing events. */
|
|
interface OnScrubListener {
|
|
|
|
/**
|
|
* Called when the user starts moving the scrubber.
|
|
*
|
|
* @param timeBar The time bar.
|
|
* @param position The scrub position in milliseconds.
|
|
*/
|
|
void onScrubStart(TimeBar timeBar, long position);
|
|
|
|
/**
|
|
* Called when the user moves the scrubber.
|
|
*
|
|
* @param timeBar The time bar.
|
|
* @param position The scrub position in milliseconds.
|
|
*/
|
|
void onScrubMove(TimeBar timeBar, long position);
|
|
|
|
/**
|
|
* Called when the user stops moving the scrubber.
|
|
*
|
|
* @param timeBar The time bar.
|
|
* @param position The scrub position in milliseconds.
|
|
* @param canceled Whether scrubbing was canceled.
|
|
*/
|
|
void onScrubStop(TimeBar timeBar, long position, boolean canceled);
|
|
}
|
|
}
|