正文
MediaPlayer
类概述
public class MediaPlayer
MediaPlayer可控制播放音乐/视频和网络流。可以从VideoView找到使用这个类的方法。
这个类与android.media.MediaPlayer的作用大部分相同。请参阅开发者指南音频和视频使用MediaPlayer。
常量
public static final int MEDIA_ERROR_UNKNOWN
常量值:0
public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK
常量值:200
public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING
常量值:700
public static final int MEDIA_INFO_BUFFERING_START
常量值:701
public static final int MEDIA_INFO_BUFFERING_END
常量值:702
public static final int MEDIA_INFO_NOT_SEEKABLE
常量值:801
public static final int MEDIA_INFO_DOWNLOAD_RATE_CHANGED
常量值:901
public static final int VIDEOQUALITY_LOW
常量值:-16
public static final int VIDEOQUALITY_MEDIUM
常量值:0
public static final int VIDEOQUALITY_HIGH
常量值:16
public static final int SUBTITLE_INTERNAL
常量值:0
public static final int SUBTITLE_EXTERNAL
常量值:1
public static final String[] SUB_TYPES
常量值:{ ".srt", ".ssa", ".smi", ".txt", ".sub", ".ass" }
公共方法
public static final boolean isLibraryLoaded()
public void setDisplay(SurfaceHolder sh)
参数
sh 用户显示视频的SurfaceHolder
public void setDataSource(Context context, Uri uri)
参数
context 获取ContentResolver时要使用的Context
uri 你要播放的uri
异常
IllegalArgumentException 状态无效时引发(uri或context为空时引发)
public native void setDataSource(String path)
public native void setDataSource(FileDescriptor fd)
public native void prepare()
设置完数据源和显示的Surface后,你需要调用prepare()或prepareAsync()。对于文件,你可以直到媒体播放器准备播放时再调用prepare。
public native void prepareAsync()
设置完数据源和显示的Surface后,你需要调用prepare()或prepareAsync()。对于流,你应该调用prepareAsync(),立即返回,而不是阻塞,直到足够的数据被缓冲。
public void start()
public void stop()
public void pause()
public void setWakeMode(Context context, int mode)
本方法在MediaPlayer访问低级别电源管理控制设备电源时使用。参数是一个android.os.PowerManager唤醒组合标识。使用这个方法需要WAKE_LOCK权限。默认情况下不使用以保持设备唤醒播放。
参数
context
mode 设置PowerManger电源/锁定模式
public void setScreenOnWhilePlaying(boolean screenOn)
参数
screenOn 设置true将保持屏幕高亮,反之允许它关闭。
public native int getVideoWidth()
返回值
返回视频的宽度,没有视频或宽度尚未确定时返回0。可以通过注册OnVideoSizeChangedListener当宽度有效时获得一个通知。
public native int getVideoHeight()
返回值
返回视频的高度,没有视频或高度尚未确定时返回0。可以通过注册OnVideoSizeChangedListener当高度有效时获得一个通知。
public native boolean isPlaying()
public native void seekTo(long msec)
参数
msec 从开始位置到msec的偏移量(以毫秒为单位)
异常
IllegalStateException 内部播放引擎未初始化引发
public native long getCurrentPosition()
public native Bitmap getCurrentFrame()
public native long getDuration()
public void release()
public void reset()
public native void setVolume(float leftVolume, float rightVolume))
public void setOnPreparedListener(OnPreparedListener listener))
public void setOnCompletionListener(OnCompletionListener l)
public void setOnErrorListener(OnErrorListener l)
public void setOnBufferingUpdateListener(OnBufferingUpdateListener l)
public void setOnSeekCompleteListener(OnSeekCompleteListener l)
public void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener)
public void setOnSubtitleUpdateListener(OnSubtitleUpdateListener l)
public void setOnInfoListener(OnInfoListener l)
public void releaseDisplay()
public native float getVideoAspectRatio()
返回值
返回视频的宽高比。没有视频或者宽高不正确返回0。参见VideoView.setVideoLayout。
public native void setVideoQuality(int quality)
参数
quality 参见MediaPlayer的常量:VIDEOQUALITY_LOW(流畅)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高质)。
public native void setDeinterlace(boolean deinterlace)
public native void setBufferSize(int bufSize)
public native boolean isBuffering()
public native int getBufferProgress()
public native void setMetaEncoding(String encoding)
public native String getMetaEncoding()
public HashMap<String, Integer> getAudioTrackMap(String encoding)
public native int getAudioTrack()
public native void setAudioTrack(int audioIndex)
public void setInitialAudioTrack(int audioIndex)
public void setInitialSubTrack(int subIndex)
public native void setSubShown(boolean shown)
参数
encoding 字幕编码。如果为null将自动检测。
public native int getSubLocation()
public native void setSubPath(String subPath)
public native String getSubPath()