package com.pukka.videoplayertv; import android.annotation.TargetApi; import android.content.Context; import android.net.Uri; import android.os.Build; import android.view.Surface; import android.view.SurfaceHolder; import java.io.FileDescriptor; import java.io.IOException; import java.util.Map; /** * 播放器相关接口定义和播放器相关常量 * */ public interface IMediaPlayer { int MEDIA_INFO_UNKNOWN = 1; int MEDIA_INFO_STARTED_AS_NEXT = 2; /**第一帧 3*/ int MEDIA_INFO_VIDEO_RENDERING_START = 3; int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; /**开始缓冲 701*/ int MEDIA_INFO_BUFFERING_START = 701; /**结束缓冲 702*/ int MEDIA_INFO_BUFFERING_END = 702; int MEDIA_INFO_NETWORK_BANDWIDTH = 703; int MEDIA_INFO_BAD_INTERLEAVING = 800; int MEDIA_INFO_NOT_SEEKABLE = 801; int MEDIA_INFO_METADATA_UPDATE = 802; int MEDIA_INFO_TIMED_TEXT_ERROR = 900; int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901; int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; int MEDIA_INFO_VIDEO_ROTATION_CHANGED = 10001; int MEDIA_INFO_AUDIO_RENDERING_START = 10002; int MEDIA_ERROR_UNKNOWN = 1; int MEDIA_ERROR_SERVER_DIED = 100; int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200; /**IO异常 -1004*/ int MEDIA_ERROR_IO = -1004; int MEDIA_ERROR_MALFORMED = -1007; /**IO异常 -1010*/ int MEDIA_ERROR_UNSUPPORTED = -1010; /**超时异常 -110*/ int MEDIA_ERROR_TIMED_OUT = -110; void setDisplay(SurfaceHolder sh); void setDataSource(Context context, Uri uri) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) void setDataSource(Context context, Uri uri, Map headers) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; void setDataSource(FileDescriptor fd) throws IOException, IllegalArgumentException, IllegalStateException; /** * 设置媒体资源 * */ void setDataSource(String path) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; /** * 获取媒体资源 * */ String getDataSource(); /** * 异步准备媒体资源 * */ void prepareAsync() throws IllegalStateException; /** * 开始播放 * */ void start() throws IllegalStateException; /** * 停止 * */ void stop() throws IllegalStateException; /** * 暂停 * */ void pause() throws IllegalStateException; void setScreenOnWhilePlaying(boolean screenOn); int getVideoWidth(); int getVideoHeight(); /** * 是否在播放 * */ boolean isPlaying(); /** * 定位播放 * */ void seekTo(long msec) throws IllegalStateException; /** * 获取当前播放时长 * */ long getCurrentPosition(); /** * 获取播放总时长 * */ long getDuration(); /** * 销毁播放器 * */ void release(); /** * 复位播放器 * */ void reset(); /** * 倍数播 * */ void setSpeed(float speed); float getSpeed(); void setVolume(float leftVolume, float rightVolume); int getAudioSessionId(); MediaInfo getMediaInfo(); @Deprecated boolean isPlayable(); /** * 播放准备就绪回调 * */ void setOnPreparedListener(OnPreparedListener listener); /** * 播放结束回调 * */ void setOnCompletionListener(OnCompletionListener listener); /** * 播放缓冲进度回调 * */ void setOnBufferingUpdateListener( OnBufferingUpdateListener listener); /** * 定位播放结束回调 * */ void setOnSeekCompleteListener( OnSeekCompleteListener listener); void setOnVideoSizeChangedListener( OnVideoSizeChangedListener listener); /** * 播放错误回调 * */ void setOnErrorListener(OnErrorListener listener); /** * 播放消息回调 * */ void setOnInfoListener(OnInfoListener listener); /*-------------------- * Listeners */ interface OnPreparedListener { void onPrepared(IMediaPlayer mp); } interface OnCompletionListener { void onCompletion(IMediaPlayer mp); } interface OnBufferingUpdateListener { void onBufferingUpdate(IMediaPlayer mp, int percent); } interface OnSeekCompleteListener { void onSeekComplete(IMediaPlayer mp); } interface OnVideoSizeChangedListener { void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den); } interface OnErrorListener { boolean onError(IMediaPlayer mp, int what, int extra); } interface OnInfoListener { boolean onInfo(IMediaPlayer mp, int what, int extra); } /*-------------------- * Optional */ void setAudioStreamType(int streamtype); @Deprecated void setKeepInBackground(boolean keepInBackground); int getVideoSarNum(); int getVideoSarDen(); @Deprecated void setWakeMode(Context context, int mode); void setLooping(boolean looping); boolean isLooping(); /*-------------------- * AndroidMediaPlayer: JELLY_BEAN */ ITrackInfo[] getTrackInfo(); /*-------------------- * AndroidMediaPlayer: ICE_CREAM_SANDWICH: */ void setSurface(Surface surface); /*-------------------- * AndroidMediaPlayer: M: */ void setDataSource(IMediaDataSource mediaDataSource); /** * exoPlayer getBufferPercentage * */ int getBufferPercentage(); }