Skip to content

listeners

xinbaicheng edited this page Aug 29, 2016 · 2 revisions

播放器监听器

本章节主要介绍Android播放SDK提供监听器以及如果使用它们

相关页面

播放器错误码和消息定义
reload使用方法

OnPreparedListener

该监听器定义于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);

OnCompletionListener

该监听器定义于IMediaPlayer
其功能是监听在播放器播放完成时发出的onCompletion回调

private IMediaPlayer.OnCompletionListener mOnCompletionListener = new IMediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(IMediaPlayer mp) {
        // 播放完成,用户可选择释放播放器
        if(ksyMediaPlayer != null) {
            ksyMediaPlayer.release();
        }
    }
};

OnInfoListener

该监听器定义于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;
    }
};

OnErrorListener

该监听器定义于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;
    }
};
Clone this wiki locally