-
Notifications
You must be signed in to change notification settings - Fork 246
listeners
xinbaicheng edited this page Aug 29, 2016
·
2 revisions
本章节主要介绍Android播放SDK提供监听器以及如果使用它们
该监听器定义于IMediaPlayer
其功能是监听在播放器准备完成,可以开播时发出的onPrepared回调,用户必须设置该监听器
private KSYMediaPlayer ksyMediaPlayer;
// OnPreparedListener的定义
private IMediaPlayer.OnPreparedListener mOnPreparedListener = new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
if(ksyMediaPlayer != null) {
// 设置视频伸缩模式,此模式为裁剪模式
ksyMediaPlayer.setVideoScalingMode(KSYMediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
// 开始播放视频
ksyMediaPlayer.start();
}
}
}
// 设置监听器
ksyMediaPlayer.setOnPreparedListener(mOnPreparedListener);
该监听器定义于IMediaPlayer
其功能是监听在播放器播放完成时发出的onCompletion回调
private IMediaPlayer.OnCompletionListener mOnCompletionListener = new IMediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(IMediaPlayer mp) {
// 播放完成,用户可选择释放播放器
if(ksyMediaPlayer != null) {
ksyMediaPlayer.release();
}
}
};
该监听器定义于IMediaPlayer
其功能是监听在播放器发出的消息通知onInfo回调,下面简要介绍较为重要的消息通知
具体的消息定义可见消息定义
public IMediaPlayer.OnInfoListener mOnInfoListener = new IMediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(IMediaPlayer iMediaPlayer, int i, int i1) {
switch (i) {
case KSYMediaPlayer.MEDIA_INFO_BUFFERING_START:
Log.d(TAG, "开始缓冲数据");
break;
case KSYMediaPlayer.MEDIA_INFO_BUFFERING_END:
Log.d(TAG, "数据缓冲完毕");
break;
case KSYMediaPlayer.MEDIA_INFO_AUDIO_RENDERING_START:
Toast.makeText(mContext, "开始播放音频", Toast.LENGTH_SHORT).show();
break;
case KSYMediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START:
Toast.makeText(mContext, "开始渲染视频", Toast.LENGTH_SHORT).show();
break;
case KSYMediaPlayer.MEDIA_INFO_SUGGEST_RELOAD:
// 播放SDK有做快速开播的优化,在流的音视频数据交织并不好时,可能只找到某一个流的信息
// 当播放器读到另一个流的数据时会发出此消息通知
// 请务必调用reload接口
if(ksyMediaPlayer != null)
ksyMediaPlayer.reload(mDataSource, false);
break;
case KSYMediaPlayer.MEDIA_INFO_RELOADED:
Toast.makeText(mContext, "reload成功的消息通知", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
};
该监听器定义于IMediaPlayer
其功能是监听在播放器发出的错误通知onError回调
具体的错误码定义可见错误码定义
private IMediaPlayer.OnErrorListener mOnErrorListener = new IMediaPlayer.OnErrorListener() {
@Override
public boolean onError(IMediaPlayer mp, int what, int extra) {
switch (what)
{
case KSYMediaPlayer.MEDIA_ERROR_IO:
//【读超时】和【链接超时】均能导致此错误的出现,用户可以选择重连
break;
}
return false;
}
};