MainActivity.java
5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.cnlive.demo.chat;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import com.cnlive.libs.chat.ChatCallback;
import com.cnlive.libs.chat.ChatConnect;
import com.cnlive.libs.chat.ChatState;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity implements ChatCallback {
private ChatConnect chatConnect;
private static final String name = "游客";
//测试聊天室 房间号
private static final String room = "82_123456789";
private EditText editText;
private ListView listView;
private Button button;
private List<String> list = new ArrayList<>();
private BaseAdapter adapter ;
private void initTestView() {
editText = (EditText) findViewById(R.id.edit_send);
listView = (ListView) findViewById(android.R.id.list);
button = (Button) findViewById(R.id.btn_send);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msg = editText.getText().toString();
sendMessage(msg);
editText.setText("");
}
});
listView.setAdapter(adapter = new BaseAdapter() {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) convertView = new TextView(parent.getContext());
((TextView) convertView).setText(list.get(position));
return convertView;
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTestView();
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
//当前SDK版本号
Log.e("Chat", "Version " + ChatConnect.getVersion());
//创建ChatConnect对象 传入回调接口
chatConnect = new ChatConnect(this);
//初始化ChatConnect对象 传入房间号
chatConnect.init(room);
//设置最大历史条数
chatConnect.setMaxStanzas(10);
}
@Override
protected void onDestroy() {
super.onDestroy();
//页面关闭 销毁ChatConnect对象
if(chatConnect!=null) chatConnect.destroy();
}
public void sendMessage(String msg){
if(TextUtils.isEmpty(msg)) return;
if(chatConnect!=null) {
//发送聊天信息
chatConnect.send(msg);
}
}
@Override
public void onChatState(int what, String extra) {
switch (what) {
case ChatState.StateInitDone: //初始化完成
//TODO 初始化完成后 连接聊天室
connectChat();
break;
case ChatState.ErrorInitAuth: //认证失败
case ChatState.ErrorInitNetwork: //未检测到网络
case ChatState.ErrorInitOther: //初始化错误
//TODO chatConnect.init(roomId); 重新初始化聊天室
break;
case ChatState.StateConnect: //与服务器建立连接
break;
case ChatState.StateReconnect: //与服务器重新连接
//TODO 自动重连后 调用connectChat();重新连接聊天室
connectChat();
break;
case ChatState.ErrorConnect: //连接服务器失败
case ChatState.ErrorChat: //聊天室连接失败
case ChatState.ErrorName: //昵称冲突
//TODO connectChat();重新连接聊天室
break;
case ChatState.ErrorConnectCloseOnError: //聊天室异常断开
//TODO
break;
case ChatState.ErrorSendOther: //消息发送失败
//TODO
break;
case ChatState.ErrorSendNoConnect: //消息发送失败 没有连接聊天室
//TODO
break;
}
Log.e("Chat", extra);
}
private void connectChat() {
chatConnect.connect(name + System.currentTimeMillis());
}
@Override
public void onChatMessage(String body, Date date) {
list.add(body);
adapter.notifyDataSetChanged();
listView.setSelection(list.size()-1);
Log.e("Chat", " Body " + body + " Date " + date.getTime());
}
}