91 lines
3.3 KiB
Java
91 lines
3.3 KiB
Java
/*
|
|
* Copyright (C) 2013 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.media;
|
|
|
|
/** @hide */
|
|
public interface MediaTimeProvider {
|
|
// we do not allow negative media time
|
|
/**
|
|
* Presentation time value if no timed event notification is requested.
|
|
*/
|
|
public final static long NO_TIME = -1;
|
|
|
|
/**
|
|
* Cancels all previous notification request from this listener if any. It
|
|
* registers the listener to get seek and stop notifications. If timeUs is
|
|
* not negative, it also registers the listener for a timed event
|
|
* notification when the presentation time reaches (becomes greater) than
|
|
* the value specified. This happens immediately if the current media time
|
|
* is larger than or equal to timeUs.
|
|
*
|
|
* @param timeUs presentation time to get timed event callback at (or
|
|
* {@link #NO_TIME})
|
|
*/
|
|
public void notifyAt(long timeUs, OnMediaTimeListener listener);
|
|
|
|
/**
|
|
* Cancels all previous notification request from this listener if any. It
|
|
* registers the listener to get seek and stop notifications. If the media
|
|
* is stopped, the listener will immediately receive a stop notification.
|
|
* Otherwise, it will receive a timed event notificaton.
|
|
*/
|
|
public void scheduleUpdate(OnMediaTimeListener listener);
|
|
|
|
/**
|
|
* Cancels all previous notification request from this listener if any.
|
|
*/
|
|
public void cancelNotifications(OnMediaTimeListener listener);
|
|
|
|
/**
|
|
* Get the current presentation time.
|
|
*
|
|
* @param precise Whether getting a precise time is important. This is
|
|
* more costly.
|
|
* @param monotonic Whether returned time should be monotonic: that is,
|
|
* greater than or equal to the last returned time. Don't
|
|
* always set this to true. E.g. this has undesired
|
|
* consequences if the media is seeked between calls.
|
|
* @throws IllegalStateException if the media is not initialized
|
|
*/
|
|
public long getCurrentTimeUs(boolean precise, boolean monotonic)
|
|
throws IllegalStateException;
|
|
|
|
/** @hide */
|
|
public static interface OnMediaTimeListener {
|
|
/**
|
|
* Called when the registered time was reached naturally.
|
|
*
|
|
* @param timeUs current media time
|
|
*/
|
|
void onTimedEvent(long timeUs);
|
|
|
|
/**
|
|
* Called when the media time changed due to seeking.
|
|
*
|
|
* @param timeUs current media time
|
|
*/
|
|
void onSeek(long timeUs);
|
|
|
|
/**
|
|
* Called when the playback stopped. This is not called on pause, only
|
|
* on full stop, at which point there is no further current media time.
|
|
*/
|
|
void onStop();
|
|
}
|
|
}
|
|
|