blob: d638a9f955444d58185210ab5471fee0c6551cc4 [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 android.media;
import android.media.MediaSession2.PlaylistParam;
import android.media.session.PlaybackState;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.Executor;
/**
* Base interfaces for all media players that want media session.
*
* @hide
*/
public abstract class MediaPlayerBase {
/**
* Listens change in {@link PlaybackState2}.
*/
public interface PlaybackListener {
/**
* Called when {@link PlaybackState2} for this player is changed.
*/
void onPlaybackChanged(PlaybackState2 state);
}
public abstract void play();
public abstract void prepare();
public abstract void pause();
public abstract void stop();
public abstract void skipToPrevious();
public abstract void skipToNext();
public abstract void seekTo(long pos);
public abstract void fastFoward();
public abstract void rewind();
public abstract PlaybackState2 getPlaybackState();
public abstract AudioAttributes getAudioAttributes();
public abstract void setPlaylist(List<MediaItem2> item, PlaylistParam param);
public abstract void setCurrentPlaylistItem(int index);
/**
* Add a {@link PlaybackListener} to be invoked when the playback state is changed.
*
* @param executor the Handler that will receive the listener
* @param listener the listener that will be run
*/
public abstract void addPlaybackListener(Executor executor, PlaybackListener listener);
/**
* Remove previously added {@link PlaybackListener}.
*
* @param listener the listener to be removed
*/
public abstract void removePlaybackListener(PlaybackListener listener);
}