blob: 93047a1aac51c587711dc087440eed22acea0814 [file] [log] [blame]
/*
* Copyright 2018 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.media;
import android.os.Bundle;
import androidx.annotation.Nullable;
import java.util.List;
class MediaInterface2 {
private MediaInterface2() {
}
// TODO: relocate methods among different interfaces and classes.
interface SessionPlaybackControl {
void prepare();
void play();
void pause();
void reset();
void seekTo(long pos);
int getPlayerState();
long getCurrentPosition();
long getDuration();
long getBufferedPosition();
int getBufferingState();
float getPlaybackSpeed();
void setPlaybackSpeed(float speed);
}
interface SessionPlaylistControl {
void setOnDataSourceMissingHelper(MediaSession2.OnDataSourceMissingHelper helper);
void clearOnDataSourceMissingHelper();
List<MediaItem2> getPlaylist();
MediaMetadata2 getPlaylistMetadata();
void setPlaylist(List<MediaItem2> list, MediaMetadata2 metadata);
void updatePlaylistMetadata(MediaMetadata2 metadata);
MediaItem2 getCurrentMediaItem();
void skipToPlaylistItem(MediaItem2 item);
void skipToPreviousItem();
void skipToNextItem();
void addPlaylistItem(int index, MediaItem2 item);
void removePlaylistItem(MediaItem2 item);
void replacePlaylistItem(int index, MediaItem2 item);
int getRepeatMode();
void setRepeatMode(int repeatMode);
int getShuffleMode();
void setShuffleMode(int shuffleMode);
}
// Common interface for session2 and controller2
// TODO: consider to add fastForward, rewind.
abstract static class SessionPlayer implements SessionPlaybackControl, SessionPlaylistControl {
abstract void skipForward();
abstract void skipBackward();
abstract void notifyError(@MediaSession2.ErrorCode int errorCode, @Nullable Bundle extras);
}
}