PlayerActivity.java 5.33 KB
package com.wepiao.star.starlive.ui;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.Toast;

import com.cnlive.lib_cnvideo.ui.CnlivePlayerActivity;
import com.cnlive.libs.chat.ChatState;
import com.ksyun.media.player.IMediaPlayer;
import com.wepiao.star.starlive.R;

/**
 * Created by gujun on 2016/7/7.
 */
public class PlayerActivity extends CnlivePlayerActivity {

    private static final String room = "cnlivetest";
    private static final String name = "游客";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cnlive_activity_player);
        //初始化播放器 channelID
        setVideoMessage("xinyingshi");
        //初始化弹幕视图 间隔时间,行数,行弹幕最大值,速度(0.1-1.0)
        initBarrage(400, 5, 10, 0.5f);
        //初始化聊天室 房间号,用户昵称
        initChat(room, name);

    }

    @Override
    protected void shareViewClick() {
        Toast.makeText(this, "分享", Toast.LENGTH_SHORT).show();
    }

    /**
     * @param iMediaPlayer
     * @param what
     * @param extra        对应错误信息详见说明文档
     *                     播放异常重试功能调用retryToPlay();
     */
    @Override
    protected void onPlayStateError(int flag, IMediaPlayer iMediaPlayer, int what, String extra) {
        super.onPlayStateError(flag, iMediaPlayer, what, extra);
        //使用方法:
        //          1.如果使用sdk自带的加载失败界面的话请加上super.onPlayStateError(iMediaPlayer,what,extra);
        //          2.如果不适用sdk自带的加载失败界面的话请删除super.onPlayStateError(iMediaPlayer,what,extra),
        //            在app端新建的加载失败页面的重试按钮添加点击事件调用retryToPlay();添加重试功能
        Toast.makeText(this, "播放异常", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void showInputLimitDialog() {
        //TODO 展示限制60输入的dialog 注意:添加dialog要进行if(!dialog.isShowing())的判断,否则会有弹出多次问题
        Toast.makeText(this, "展示输入超过60字的提示框", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void showInputSensitiveWordsDialog(String msg) {
        //TODO 展示敏感词的dialog
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    //聊天室事件监听
    @Override
    public void onChatState(int what, String extra) {
        switch (what) {
            case ChatState.StateInitDone: //初始化完成
                connectChat();//连接聊天室
                break;
            case ChatState.ErrorInitAuth: //认证失败
            case ChatState.ErrorInitNetwork: //未检测到网络
            case ChatState.ErrorInitOther: //初始化错误
                showMessage("聊天室初始化失败,点击重试", clickErrorInit);//设置错误信息
                break;
            case ChatState.StateConnect: //与服务器建立连接
                break;
            case ChatState.StateJoin: //聊天室登录成功
                hideMessage();//隐藏错误信息
                break;
            case ChatState.StateReconnect: //与服务器重新连接
                connectChat();
                break;
            case ChatState.ErrorConnect: //连接服务器失败
            case ChatState.ErrorChat: //聊天室连接失败
            case ChatState.ErrorName: //昵称冲突
                String message = "聊天室连接失败,点击重试";
                SpannableString spannableString = new SpannableString(message); //定义文字样式
                spannableString.setSpan(new UnderlineSpan(), message.length() - 2, message.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(255, 213, 0)), message.length() - 2, message.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
                showMessage(spannableString, clickErrorConnect);//设置错误信息
                break;
            case ChatState.ErrorConnectCloseOnError: //聊天室异常断开
                showMessage("聊天室已断开,请检查网络");
                break;
            case ChatState.ErrorSendOther: //消息发送失败
                Toast.makeText(this,extra, Toast.LENGTH_SHORT).show();
                break;
            case ChatState.ErrorSendNoConnect: //消息发送失败 没有连接聊天室
                Toast.makeText(this,extra, Toast.LENGTH_SHORT).show();
                break;
        }
    }

    //聊天室连接失败 点击事件
    protected View.OnClickListener clickErrorConnect = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            v.setOnClickListener(null);
            connectChat();
        }
    };

    //聊天室初始化失败 点击事件
    protected View.OnClickListener clickErrorInit = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            v.setOnClickListener(null);
            initChat(room, name);
        }
    };
}