/* * 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.support.v4.media; /** * Base interface to controlling a media transport. This is the * interface for implementing things like on-screen controls: it * allows them to request changes in playback, retrieve the current * playback state, and monitor for changes to the playback state. */ public abstract class TransportController { /** * Start listening to changes in playback state. */ public abstract void registerStateListener(TransportStateListener listener); /** * Stop listening to changes in playback state. */ public abstract void unregisterStateListener(TransportStateListener listener); /** * Request that the player start its playback at its current position. */ public abstract void startPlaying(); /** * Request that the player pause its playback and stay at its current position. */ public abstract void pausePlaying(); /** * Request that the player stop its playback; it may clear its state in whatever * way is appropriate. */ public abstract void stopPlaying(); /** * Retrieve the total duration of the media stream, in milliseconds. */ public abstract long getDuration(); /** * Retrieve the current playback location in the media stream, in milliseconds. */ public abstract long getCurrentPosition(); /** * Move to a new location in the media stream. * @param pos Position to move to, in milliseconds. */ public abstract void seekTo(long pos); /** * Return whether the player is currently playing its stream. */ public abstract boolean isPlaying(); /** * Retrieve amount, in percentage (0-100), that the media stream has been buffered * on to the local device. Return 100 if the stream is always local. */ public abstract int getBufferPercentage(); /** * Retrieve the flags for the media transport control buttons that this transport supports. * Result is a combination of the following flags: * {@link TransportMediator#FLAG_KEY_MEDIA_PREVIOUS}, * {@link TransportMediator#FLAG_KEY_MEDIA_REWIND}, * {@link TransportMediator#FLAG_KEY_MEDIA_PLAY}, * {@link TransportMediator#FLAG_KEY_MEDIA_PLAY_PAUSE}, * {@link TransportMediator#FLAG_KEY_MEDIA_PAUSE}, * {@link TransportMediator#FLAG_KEY_MEDIA_STOP}, * {@link TransportMediator#FLAG_KEY_MEDIA_FAST_FORWARD}, * {@link TransportMediator#FLAG_KEY_MEDIA_NEXT} */ public abstract int getTransportControlFlags(); }