| /* |
| * 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(); |
| } |
| } |
| |