Android MediaPlayer

MediaPlayer简介

android多媒体类,播放流程如下方法:

setDataSource() 设置一个数据源,

prepare() 播放之前需要调用此方法,在准备状态

setDisplay() 需要SurfaceHolder对象,画面显示在SurfaceView上

start() 开始播放

pause() 播放暂停

stop() 停止播放(处于停止状态必须调用prepare()让其回到准备状态才能播放)

MediaPlayer源码里的方法

package android.media;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.MediaDrm.KeyRequest;
import android.media.VolumeShaper.Configuration;
import android.net.Uri;
import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.view.Surface;
import android.view.SurfaceHolder;
import java.io.FileDescriptor;
import java.io.IOException;
import java.net.HttpCookie;
import java.util.List;
import java.util.Map;
import java.util.UUID;

public class MediaPlayer implements VolumeAutomation {
    //文件或者是网络相关操作错误
    public static final int MEDIA_ERROR_IO = -1004;
    //添加不符合的编码标准或文件格式
    public static final int MEDIA_ERROR_MALFORMED = -1007;
    //视频索引(例如,MOOVAtom)不在文件的开头
    public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200;
    //媒体服务关闭
    public static final int MEDIA_ERROR_SERVER_DIED = 100;
    //有些操作花费的时间太长,通常超过3-5秒
    public static final int MEDIA_ERROR_TIMED_OUT = -110;
    //未指定的媒体,播放错误
    public static final int MEDIA_ERROR_UNKNOWN = 1;
    //媒体框架不支持该规格
    public static final int MEDIA_ERROR_UNSUPPORTED = -1010;
    //无法播放
    public static final int MEDIA_INFO_AUDIO_NOT_PLAYING = 804;
    //播放文件损坏,视频跟音频不同步
    public static final int MEDIA_INFO_BAD_INTERLEAVING = 800;
    //加载满缓冲 开始播放
    public static final int MEDIA_INFO_BUFFERING_END = 702;
    //MyIApple暂时暂停播放,以缓冲更多的数据
    public static final int MEDIA_INFO_BUFFERING_START = 701;
    //一系列新的metedata可被使用
    public static final int MEDIA_INFO_METADATA_UPDATE = 802;
    //不可移动帧,对于直播流
    public static final int MEDIA_INFO_NOT_SEEKABLE = 801;
    //渲染字幕时间过长
    public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902;
    //获取的视频信息是未知的信息
    public static final int MEDIA_INFO_UNKNOWN = 1;
    //字幕轨道不被媒体服务支持
    public static final int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901;
    public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805;
    //用户只推第一帧视频渲染
    public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3;
    //视频编码过于复杂,解码器无法足够快的解码出帧
    public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700;
    public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
    public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3;
    public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1;
    public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2;
    public static final int PREPARE_DRM_STATUS_SUCCESS = 0;
    public static final int SEEK_CLOSEST = 3;
    public static final int SEEK_CLOSEST_SYNC = 2;
    public static final int SEEK_NEXT_SYNC = 1;
    public static final int SEEK_PREVIOUS_SYNC = 0;
    public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1;
    public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2;

    public MediaPlayer() {
        throw new RuntimeException("Stub!");
    }
    //设置用SurfaceView来显示多媒体
    public void setDisplay(SurfaceHolder sh) {
        throw new RuntimeException("Stub!");
    }

    public void setSurface(Surface surface) {
        throw new RuntimeException("Stub!");
    }

    public void setVideoScalingMode(int mode) {
        throw new RuntimeException("Stub!");
    }
    //设置一个uri网络视频源
    public static MediaPlayer create(Context context, Uri uri) {
        throw new RuntimeException("Stub!");
    }
    //设置一个uri网络视频源并且在surfaceView播放
    public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder) {
        throw new RuntimeException("Stub!");
    }

    public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder, AudioAttributes audioAttributes, int audioSessionId) {
        throw new RuntimeException("Stub!");
    }
    //设置资源文件为播放源
    public static MediaPlayer create(Context context, int resid) {
        throw new RuntimeException("Stub!");
    }

    public static MediaPlayer create(Context context, int resid, AudioAttributes audioAttributes, int audioSessionId) {
        throw new RuntimeException("Stub!");
    }
    //设置一个uri网络视频源
    public void setDataSource(Context context, Uri uri) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void setDataSource(Context context, Uri uri, Map<String, String> headers, List<HttpCookie> cookies) throws IOException {
        throw new RuntimeException("Stub!");
    }

    public void setDataSource(Context context, Uri uri, Map<String, String> headers) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    //设置视频源播放路径
    public void setDataSource(String path) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    //设置assets资源文件为播放源
    public void setDataSource(AssetFileDescriptor afd) throws IOException, IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void setDataSource(FileDescriptor fd) throws IOException, IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void setDataSource(FileDescriptor fd, long offset, long length) throws IOException, IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void setDataSource(MediaDataSource dataSource) throws IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    //进入同步准备状态
    public void prepare() throws IOException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    //进入异步准备状态
    public native void prepareAsync() throws IllegalStateException;
    //开始播放
    public void start() throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    //停止播放
    public void stop() throws IllegalStateException {
        throw new RuntimeException("Stub!");
    } 
    //暂停播放
    public void pause() throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }
    
    public VolumeShaper createVolumeShaper(Configuration configuration) {
        throw new RuntimeException("Stub!");
    }
    
    public void setWakeMode(Context context, int mode) {
        throw new RuntimeException("Stub!");
    }
    //设置用SurfaceHolder显示 
    public void setScreenOnWhilePlaying(boolean screenOn) {
        throw new RuntimeException("Stub!");
    }
    //得到视频的宽度
    public native int getVideoWidth();
    //得到视频的高度
    public native int getVideoHeight();
   
    public PersistableBundle getMetrics() {
        throw new RuntimeException("Stub!");
    }
    //判断是否在播放状态
    public native boolean isPlaying();
   
    public native void setPlaybackParams(PlaybackParams var1);

    public native PlaybackParams getPlaybackParams();

    public native void setSyncParams(SyncParams var1);

    public native SyncParams getSyncParams();
    
    public void seekTo(long msec, int mode) {
        throw new RuntimeException("Stub!");
    }
    //指定播放的位置(以毫秒为单位) 
    public void seekTo(int msec) throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public MediaTimestamp getTimestamp() {
        throw new RuntimeException("Stub!");
    }
    //得到当前播放位置
    public native int getCurrentPosition();
    //得到视频总时长
    public native int getDuration();

    public native void setNextMediaPlayer(MediaPlayer var1);
    //释放播放资源
    public void release() {
        throw new RuntimeException("Stub!");
    }
    //重置MediaPlayer对象为刚刚创建的状态
    public void reset() {
        throw new RuntimeException("Stub!");
    }
     
    //设置流媒体的类型 例如AudioManager.STREAM_MUSIC为音乐
    @Deprecated
    public void setAudioStreamType(int streamtype) {
        throw new RuntimeException("Stub!");
    }

    public void setAudioAttributes(AudioAttributes attributes) throws IllegalArgumentException {
        throw new RuntimeException("Stub!");
    }
    //设置循环播放
    public native void setLooping(boolean var1);
    //判断是否循环播放
    public native boolean isLooping();
    //设置音量
    public void setVolume(float leftVolume, float rightVolume) {
        throw new RuntimeException("Stub!");
    }

    public native void setAudioSessionId(int var1) throws IllegalArgumentException, IllegalStateException;

    public native int getAudioSessionId();

    public native void attachAuxEffect(int var1);

    public void setAuxEffectSendLevel(float level) {
        throw new RuntimeException("Stub!");
    }

    public MediaPlayer.TrackInfo[] getTrackInfo() throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void addTimedTextSource(String path, String mimeType) throws IOException, IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void addTimedTextSource(Context context, Uri uri, String mimeType) throws IOException, IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void addTimedTextSource(FileDescriptor fd, String mimeType) throws IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void addTimedTextSource(FileDescriptor fd, long offset, long length, String mime) throws IllegalArgumentException, IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public int getSelectedTrack(int trackType) throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void selectTrack(int index) throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    public void deselectTrack(int index) throws IllegalStateException {
        throw new RuntimeException("Stub!");
    }

    protected void finalize() {
        throw new RuntimeException("Stub!");
    }

    public void setOnPreparedListener(MediaPlayer.OnPreparedListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener) {
        throw new RuntimeException("Stub!");
    }
    //视频尺寸监听
    public void setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnTimedTextListener(MediaPlayer.OnTimedTextListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnTimedMetaDataAvailableListener(MediaPlayer.OnTimedMetaDataAvailableListener listener) {
        throw new RuntimeException("Stub!");
    }
    //设置错误信息监听
    public void setOnErrorListener(MediaPlayer.OnErrorListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnInfoListener(MediaPlayer.OnInfoListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnDrmConfigHelper(MediaPlayer.OnDrmConfigHelper listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnDrmInfoListener(MediaPlayer.OnDrmInfoListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnDrmInfoListener(MediaPlayer.OnDrmInfoListener listener, Handler handler) {
        throw new RuntimeException("Stub!");
    }

    public void setOnDrmPreparedListener(MediaPlayer.OnDrmPreparedListener listener) {
        throw new RuntimeException("Stub!");
    }

    public void setOnDrmPreparedListener(MediaPlayer.OnDrmPreparedListener listener, Handler handler) {
        throw new RuntimeException("Stub!");
    }

    public MediaPlayer.DrmInfo getDrmInfo() {
        throw new RuntimeException("Stub!");
    }

    public void prepareDrm(UUID uuid) throws UnsupportedSchemeException, ResourceBusyException, MediaPlayer.ProvisioningNetworkErrorException, MediaPlayer.ProvisioningServerErrorException {
        throw new RuntimeException("Stub!");
    }

    public void releaseDrm() throws MediaPlayer.NoDrmSchemeException {
        throw new RuntimeException("Stub!");
    }

    public KeyRequest getKeyRequest(byte[] keySetId, byte[] initData, String mimeType, int keyType, Map<String, String> optionalParameters) throws MediaPlayer.NoDrmSchemeException {
        throw new RuntimeException("Stub!");
    }

    public byte[] provideKeyResponse(byte[] keySetId, byte[] response) throws MediaPlayer.NoDrmSchemeException, DeniedByServerException {
        throw new RuntimeException("Stub!");
    }

    public void restoreKeys(byte[] keySetId) throws MediaPlayer.NoDrmSchemeException {
        throw new RuntimeException("Stub!");
    }

    public String getDrmPropertyString(String propertyName) throws MediaPlayer.NoDrmSchemeException {
        throw new RuntimeException("Stub!");
    }

    public void setDrmPropertyString(String propertyName, String value) throws MediaPlayer.NoDrmSchemeException {
        throw new RuntimeException("Stub!");
    }

    public static final class MetricsConstants {
        public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
        public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
        public static final String DURATION = "android.media.mediaplayer.durationMs";
        public static final String ERRORS = "android.media.mediaplayer.err";
        public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
        public static final String FRAMES = "android.media.mediaplayer.frames";
        public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
        public static final String HEIGHT = "android.media.mediaplayer.height";
        public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
        public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
        public static final String PLAYING = "android.media.mediaplayer.playingMs";
        public static final String WIDTH = "android.media.mediaplayer.width";

        MetricsConstants() {
            throw new RuntimeException("Stub!");
        }
    }

    public static final class ProvisioningServerErrorException extends MediaDrmException {
        public ProvisioningServerErrorException(String detailMessage) {
            super((String)null);
            throw new RuntimeException("Stub!");
        }
    }

    public static final class ProvisioningNetworkErrorException extends MediaDrmException {
        public ProvisioningNetworkErrorException(String detailMessage) {
            super((String)null);
            throw new RuntimeException("Stub!");
        }
    }

    public static final class NoDrmSchemeException extends MediaDrmException {
        public NoDrmSchemeException(String detailMessage) {
            super((String)null);
            throw new RuntimeException("Stub!");
        }
    }

    public static final class DrmInfo {
        DrmInfo() {
            throw new RuntimeException("Stub!");
        }

        public Map<UUID, byte[]> getPssh() {
            throw new RuntimeException("Stub!");
        }

        public UUID[] getSupportedSchemes() {
            throw new RuntimeException("Stub!");
        }
    }

    public interface OnDrmPreparedListener {
        void onDrmPrepared(MediaPlayer var1, int var2);
    }

    public interface OnDrmInfoListener {
        void onDrmInfo(MediaPlayer var1, MediaPlayer.DrmInfo var2);
    }

    public interface OnDrmConfigHelper {
        void onDrmConfig(MediaPlayer var1);
    }

    public interface OnInfoListener {
        boolean onInfo(MediaPlayer var1, int var2, int var3);
    }

    public interface OnErrorListener {
        boolean onError(MediaPlayer var1, int var2, int var3);
    }

    public interface OnTimedMetaDataAvailableListener {
        void onTimedMetaDataAvailable(MediaPlayer var1, TimedMetaData var2);
    }

    public interface OnTimedTextListener {
        void onTimedText(MediaPlayer var1, TimedText var2);
    }

    public interface OnVideoSizeChangedListener {
        void onVideoSizeChanged(MediaPlayer var1, int var2, int var3);
    }

    public interface OnSeekCompleteListener {
        void onSeekComplete(MediaPlayer var1);
    }

    public interface OnBufferingUpdateListener {
        void onBufferingUpdate(MediaPlayer var1, int var2);
    }

    public interface OnCompletionListener {
        void onCompletion(MediaPlayer var1);
    }

    public interface OnPreparedListener {
        void onPrepared(MediaPlayer var1);
    }

    public static class TrackInfo implements Parcelable {
        public static final int MEDIA_TRACK_TYPE_AUDIO = 2;
        public static final int MEDIA_TRACK_TYPE_METADATA = 5;
        public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4;
        public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3;
        public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0;
        public static final int MEDIA_TRACK_TYPE_VIDEO = 1;

        TrackInfo() {
            throw new RuntimeException("Stub!");
        }

        public int getTrackType() {
            throw new RuntimeException("Stub!");
        }

        public String getLanguage() {
            throw new RuntimeException("Stub!");
        }

        public MediaFormat getFormat() {
            throw new RuntimeException("Stub!");
        }

        public int describeContents() {
            throw new RuntimeException("Stub!");
        }

        public void writeToParcel(Parcel dest, int flags) {
            throw new RuntimeException("Stub!");
        }

        public String toString() {
            throw new RuntimeException("Stub!");
        }
    }
}

 

转载于:https://www.cnblogs.com/94xiyang/p/9492625.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值