StreamActivity.java
9.97 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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
package com.wepiao.star.starlive.ui;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.UnderlineSpan;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
import com.wepiao.star.starlive.R;
import com.wepiao.star.starlive.model.BaseContributionInfo;
import com.cnlive.lib_cnvideo.model.ContributionInfo;
import com.cnlive.lib_cnvideo.stream.BaseCNStreamActivity;
import com.cnlive.libs.chat.ChatState;
import com.cnlive.libs.stream.base.IStreamer;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2016/8/16.
*/
public class StreamActivity extends BaseCNStreamActivity {
private String activityid = "" + System.currentTimeMillis();
private String channelid = "yupiao";
private int isHorizon = 0;
private Button button1, button2, button3;
private static final String room = "cnlivetest";
private static final String name = "游客";
private static final boolean isMovie = true;
//TODO 问题消息体 {"type":"question","user_name":"name","mbody":"test message","imgurl":"http://y3.cnliveimg.com:8080/image/itv/2016/0729/c48d1db2dc1641f19d90ef23e294d34a_139042_100.jpg","num":"5"}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cnstream_base_activity);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//初始化弹幕视图 间隔时间,行数,行弹幕最大值,速度(0.1-1.0)
initTopBarrage(400, 2, 10, 0.5f);
initBottomBarrage(400, 5, 10, 0.5f);
//初始化聊天室 房间号,用户昵称
initChat(room, name);
//初始化 设置是否有电影票
initStream(isMovie);
//测试
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(listener);
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(listener);
button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(listener);
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
List<ContributionInfo> list = new ArrayList<>();
list.add(new BaseContributionInfo("http://v1.qzone.cc/avatar/201403/23/11/54/532e5aefc546e496.jpg!200x200.jpg", "1"));
list.add(new BaseContributionInfo("http://imgsrc.baidu.com/baike/pic/item/c2fdfc039245d6882d5d54d9a6c27d1ed21b2474.jpg", "2"));
list.add(new BaseContributionInfo("http://img2.a0bi.com/upload/ttq/20160709/1468043314019.png", "1"));
list.add(new BaseContributionInfo("http://b.hiphotos.baidu.com/zhidao/pic/item/d1a20cf431adcbefef0f982fabaf2edda3cc9fe4.jpg", "2"));
list.add(new BaseContributionInfo("http://img2.a0bi.com/upload/ttq/20160817/1471399679901.png", "1"));
list.add(new BaseContributionInfo("http://img2.a0bi.com/upload/ttq/20160709/1468043314019.png", "2"));
updateContributionList(list);
break;
case R.id.button2:
updateIncome(2334455);
break;
case R.id.button3:
updateFollowCount(1122333);
break;
}
}
};
@Override
public void setStreamData() {
//设置 直播节目 属性
cnBuilder.setActivityID(activityid);
cnBuilder.setChannelID(channelid);
cnBuilder.setIsHorizontalScreen(isHorizon);
}
@Override
public void showEnd() {
// //直播结束页面的数据
showEndView("123456", "123456");
}
@Override
public void closeButtonWhenNotInLiveClickListener() {
//直播结束页面和直播页面(没有在直播状态中)的关闭按钮点击事件
super.closeButtonWhenNotInLiveClickListener();
finish();
}
@Override
public void replayButtonClickListener() {
//直播结束页的重播按钮点击事件
super.replayButtonClickListener();
finish();
}
@Override
public void backClickListener() {
//重试页面返回按钮的点击事件
super.backClickListener();
finish();
}
@Override
public void onContributionListClick() {
super.onContributionListClick();
Toast.makeText(this, "您点击了贡献榜", Toast.LENGTH_SHORT).show();
}
@Override
public void onStreamerState(int flag, String extra) {
//推流状态信息,输出状态即可,与 initCNStreamError(int flag) 包含初始化失败状态
}
@Override
public void initCNStreamError(int flag) {
//初始化CNStreamSDK失败,可能的原因是开启摄像头失败、转码失败、编码失败、
Log.e("DemoView", String.valueOf(flag));
switch (flag) {
case IStreamer.cnstream_error_create_stream_server:
//创建直播活动请求服务器失败
break;
case IStreamer.cnstream_error_create_stream_network:
//创建直播活动时网络连接失败
break;
case IStreamer.cnstream_error_create_stream_other:
//创建直播活动时失败
break;
case IStreamer.cnstream_error_stop_stream:
//停止直播活动失败
break;
case IStreamer.cnstream_init_error_instop:
//初始化失败 正在停止推流
break;
case IStreamer.cnstream_error_dns_parse_failed:
//url域名解析失败
break;
case IStreamer.cnstream_error_av_async:
//音视频采集pts差值超过5s 音视频采集pts具体差值,单位ms
break;
case IStreamer.cnstream_video_encoder_error_unsupported:
//编码器初始化失败
break;
case IStreamer.cnstream_video_encoder_error_unknown:
//视频编码失败
break;
case IStreamer.cnstream_audio_encoder_error_unsupported:
//音频初始化失败
break;
case IStreamer.cnstream_audio_encoder_error_unknown:
//音频编码失败
break;
case IStreamer.cnstream_audio_recorder_error_start_failed:
//录音开启失败
break;
case IStreamer.cnstream_audio_recorder_error_unknown:
//录音开启未知错误
break;
case IStreamer.cnstream_camera_error_unknown:
//摄像头未知错误
break;
case IStreamer.cnstream_camera_error_start_failed:
//打开摄像头失败
break;
case IStreamer.cnstream_camera_error_server_died:
//系统Camera服务进程退出
break;
}
// finish();
}
//聊天室事件监听
@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: //与服务器建立连接
hideMessage();//隐藏错误信息
break;
case ChatState.StateReconnect: //与服务器重新连接
hideMessage();
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: //消息发送失败
//TODO Toast提示
break;
case ChatState.ErrorSendNoConnect: //消息发送失败 没有连接聊天室
//TODO Toast提示
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);
}
};
}