ChatRoomActivity.java 9.28 KB
package com.cnlive.im.ui;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.cnlive.im.R;
import com.cnlive.im.adapter.ChatListAdapter;
import com.cnlive.libs.util.chat.ChatUtil;
import com.cnlive.libs.util.chat.base.IChat;
import com.cnlive.libs.util.chat.model.CNMessage;
import com.cnlive.libs.util.chat.model.CNUserInfo;

import java.util.ArrayList;

/**
 * @author 陈硕
 * @time 2017/3/7  14:36
 * @desc ${TODD}
 */
public class ChatRoomActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "ChatRoomActivity";
    private ArrayList<CNMessage> groupChatOneListMy, groupChatTwoListMy;
    private String roomIdOne = "ChatRoom05", roomIdTwo = "ChatRoom06";
    private EditText editText;
    private Button send_messageOneBtn, send_messageOneTwo;
    private ListView listViewOne;
    private ChatListAdapter chatListAdapterOne, chatListAdapterTwo;
    private ListView listViewTwo;
    private Button user_switchBtn, reconnectionBtn, switch_visitorsBtn, foundChatBtn, disconnectBtn;
    private Button creatChat2Btn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_groupchat);
        initUI();
        //设置监听
        ChatUtil.setConnectStatusListener(connectStatusListener);
        ChatUtil.setOnChatRoomActionListener(chatRoomActionListener);
        ChatUtil.setOnReceiveMessageListener(receiveMessageListener);
        ChatUtil.setKickedOfflineListener(onKickedOfflineListener);
    }


    private void initUI() {
        creatChat2Btn = (Button) findViewById(R.id.creatChat2);
        disconnectBtn = (Button) findViewById(R.id.disconnect);
        foundChatBtn = (Button) findViewById(R.id.creatChat);
        switch_visitorsBtn = (Button) findViewById(R.id.switch_visitors);
        reconnectionBtn = (Button) findViewById(R.id.connectionBtn);
        user_switchBtn = (Button) findViewById(R.id.user_switch);
        listViewOne = (ListView) findViewById(R.id.chat_list_viewOne);
        listViewTwo = (ListView) findViewById(R.id.chat_list_viewTwo);
        editText = (EditText) findViewById(R.id.message_content);
        send_messageOneBtn = (Button) findViewById(R.id.send_messageOne);
        send_messageOneTwo = (Button) findViewById(R.id.send_messageTwo);
        disconnectBtn.setOnClickListener(this);
        foundChatBtn.setOnClickListener(this);
        send_messageOneBtn.setOnClickListener(this);
        send_messageOneTwo.setOnClickListener(this);
        reconnectionBtn.setOnClickListener(this);
        user_switchBtn.setOnClickListener(this);
        switch_visitorsBtn.setOnClickListener(this);
        creatChat2Btn.setOnClickListener(this);
        groupChatOneListMy = new ArrayList<>();
        groupChatTwoListMy = new ArrayList<>();
        chatListAdapterOne = new ChatListAdapter(ChatRoomActivity.this);
        chatListAdapterTwo = new ChatListAdapter(ChatRoomActivity.this);
        listViewOne.setAdapter(chatListAdapterOne);
        listViewTwo.setAdapter(chatListAdapterTwo);
    }


    //连接监听
    private IChat.OnConnectListener connectListener = new IChat.OnConnectListener() {
        @Override
        public void onTokenIncorrect() {
            Log.e(TAG, "ConnectListener TokenIncorrect");
        }

        @Override
        public void onSuccess(String s) {
            Log.e(TAG, "ConnectListener 连接监听" + s);

        }

        @Override
        public void onError(int i, String s) {
            Log.e(TAG, "ConnectListener errorCode : " + i + " : errorMessage : " + s);
        }
    };


    /**
     * 发送消息监听
     */
    private IChat.OnSendMessageListener sendMessageListener = new IChat.OnSendMessageListener() {

        @Override
        public void onAttached(CNMessage cnMessage) {

            Log.v(TAG, "SendMessageListener onAttached" + cnMessage.getTargetId() + cnMessage.getUserInfo().getUserName());

        }

        @Override
        public void onSuccess(CNMessage cnMessage) {
            if (("60_" + roomIdOne).equals(cnMessage.getTargetId())) {
                groupChatOneListMy.add(cnMessage);
                chatListAdapterOne.updateItems(groupChatOneListMy);
                chatListAdapterOne.notifyDataSetChanged();
            }
            Log.v(TAG, "SendMessageListener SUCCESSES" + cnMessage.getTargetId() + cnMessage.getUserInfo().getUserName());

            /**
             * 连接两个聊天室30015 错误
             */
            if (("60_" + roomIdTwo).equals(cnMessage.getTargetId())) {
                groupChatTwoListMy.add(cnMessage);
                chatListAdapterTwo.updateItems(groupChatTwoListMy);
                chatListAdapterTwo.notifyDataSetChanged();
            }

        }

        @Override
        public void onError(CNMessage cnMessage, int i, String s) {
            Log.v(TAG, "SendMessageListener 失败 " + i + "    s" + s);

        }
    };

    //连接状态监听
    private IChat.OnConnectStatusListener connectStatusListener = new IChat.OnConnectStatusListener() {
        @Override
        public void onConnectStatus(int i, String s) {
            Log.i(TAG, "连接状态监听" + i + "   " + s);


        }
    };

    //接收消息监听
    private IChat.OnReceiveMessageListener receiveMessageListener = new IChat.OnReceiveMessageListener() {
        @Override
        public void processMessage(CNMessage cnMessage) {
            Log.v(TAG, "receiveMessageListener" + "   " + cnMessage.getTargetId() + "   " + cnMessage.getContent());
        }
    };


    //聊天室操作
    private IChat.OnChatRoomActionListener chatRoomActionListener = new IChat.OnChatRoomActionListener() {
        @Override
        public void onJoining(String s) {
            Log.i(TAG, "chatRoomActionListener" + "   onJoining" + s);

        }

        @Override
        public void onJoined(String s) {
            Log.i(TAG, "chatRoomActionListener     " + "onJoined" + s);

        }

        @Override
        public void onQuited(String s) {
            Log.i(TAG, "chatRoomActionListener     " + "onQuited" + s);

        }

        @Override
        public void onError(String s, int i, String s1) {
            Log.i(TAG, "chatRoomActionListener     " + "onError" + s);

        }
    };

    //被踢下线状态
    private IChat.OnKickedOfflineListener onKickedOfflineListener = new IChat.OnKickedOfflineListener() {
        @Override
        public void disconnected(int what, String extra) {
            Log.e(TAG, what + " : " + extra);
        }

        @Override
        public void conByDevId(int what, String extra) {
            Log.e(TAG, what + " : " + extra);
        }
    };


    // 加入聊天室监听
    private IChat.OnOperationListener onOperationListener = new IChat.OnOperationListener() {
        @Override
        public void onSuccess(int what, String extra) {
            Log.v(TAG, "加入聊天室" + what + extra);

        }

        @Override
        public void onError(int what, String extra) {
            Log.v(TAG, "加入聊天室" + what + extra);

        }
    };

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            //向聊天室1发送消息
            case R.id.send_messageOne:
                //发送聊天室消息
                if (editText.getText().toString().isEmpty()) {
                    Toast.makeText(this, "不能发送空消息呦~", Toast.LENGTH_SHORT).show();
                } else {
                    ChatUtil.sendMessage(IChat.CHATROOM, roomIdOne, editText.getText().toString(), sendMessageListener);
                    editText.setText("");
                }
                break;
            // 向聊天室2发送消息
            case R.id.send_messageTwo:
                //发送聊天室消息
                if (editText.getText().toString().isEmpty()) {
                    Toast.makeText(this, "不能发送空消息呦~", Toast.LENGTH_SHORT).show();
                } else {
                    ChatUtil.sendMessage(IChat.CHATROOM, roomIdTwo, editText.getText().toString(), sendMessageListener);
                    editText.setText("");
                }
                break;
            // 用户
            case R.id.user_switch:
                ChatUtil.login(new CNUserInfo("5969", "testUser", ""), connectListener);
                break;
            //连接
            case R.id.connectionBtn:
                ChatUtil.connect(connectListener);
                break;

            // 切换成游客
            case R.id.switch_visitors:


                ChatUtil.logOut(connectListener);
                break;
            // 创建聊天
            case R.id.creatChat:
                ChatUtil.joinChatRoom(roomIdOne, -1, onOperationListener);
                break;
            //  断开连接
            case R.id.disconnect:
                ChatUtil.quitChatRoom(roomIdOne, onOperationListener);
                break;

            case R.id.creatChat2:
                ChatUtil.joinChatRoom(roomIdTwo, -1, onOperationListener);
                break;


        }
    }


    @Override
    protected void onPause() {
        super.onPause();
        ChatUtil.disconnect(false);
    }



}