Android MediaPlayer - litonghui/TechBlog GitHub Wiki
Android 平台视频播放实现由多种方式: VideoView 和 MediaPlayer是最常用的;显示启动调用本地播放器。
MediaPlayer
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Class<MediaPlayer> clazz = MediaPlayer.class;
Method method = clazz.getDeclaredMethod("setDataSource", String.class, Map.class);
method.invoke(mediaPlayer, CURRENT_PLAYING_URL, MAP_HEADER_DATA);
mediaPlayer.setLooping(CURRENT_PLING_LOOP);//是否循环播放
mediaPlayer.setOnPreparedListener(MediaManager.this);
mediaPlayer.setOnCompletionListener(MediaManager.this);
mediaPlayer.setOnBufferingUpdateListener(MediaManager.this);
mediaPlayer.setScreenOnWhilePlaying(true);//设置播放时常亮
mediaPlayer.setOnSeekCompleteListener(MediaManager.this);
mediaPlayer.setOnErrorListener(MediaManager.this);
mediaPlayer.setOnInfoListener(MediaManager.this);
mediaPlayer.setOnVideoSizeChangedListener(MediaManager.this);
mediaPlayer.prepareAsync();//异步准备完成,会触发OnPreparedListener.onPrepared(),进而进入Prepared状态
mediaPlayer.setSurface(new Surface(savedSurfaceTexture));
MediaPlayer 注意的方法:
1.其中MediaPlayer 提供了一个setDataSource 方法设置播放的地址,在这里用到反射方法设置播放地址。
2.prepareAsync() 和 prepare() 同步和异步方式Prepares the player
3.SurfaceTexture savedSurfaceTexture; 对于mediaPlayer.setSurface 设置对象必须为Surface ,所有需要重新构造,更多关注
MediaPlayer 回调方法:
1.setOnPreparedListener 视频加载完成,准备进入播放状态
2.setOnBufferingUpdateListener 视频缓冲更新进度条 progressBar.setSecondaryProgress(bufferProgress)
3.setOnCompletionListener 视频播放完成回调
4.setOnErrorListener 视频播放中网络等错误回调
5.setOnVideoSizeChangedListener 视频大小回调,动态改变视频大小