MyEngineEventHandler.java
5.13 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
package com.chudiangameplay.android.model;
import android.content.Context;
import com.chudiangameplay.android.tool.Log;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import io.agora.rtc.IRtcEngineEventHandler;
import io.agora.rtc.RtcEngine;
public class MyEngineEventHandler {
public MyEngineEventHandler(Context ctx, EngineConfig config) {
this.mContext = ctx;
this.mConfig = config;
}
private final EngineConfig mConfig;
private final Context mContext;
private final ConcurrentHashMap<AGEventHandler, Integer> mEventHandlerList = new ConcurrentHashMap<>();
public void addEventHandler(AGEventHandler handler) {
this.mEventHandlerList.put(handler, 0);
}
public void removeEventHandler(AGEventHandler handler) {
this.mEventHandlerList.remove(handler);
}
final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
@Override
public void onUserJoined(int uid, int elapsed) {
}
@Override
public void onUserOffline(int uid, int reason) {
Log.i("onUserOffline " + (uid & 0xFFFFFFFFL) + " " + reason);
// FIXME this callback may return times
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onUserOffline(uid, reason);
}
}
@Override
public void onRtcStats(RtcStats stats) {
}
@Override
public void onAudioVolumeIndication(AudioVolumeInfo[] speakerInfos, int totalVolume) {
if (speakerInfos == null) {
// quick and dirty fix for crash
// TODO should reset UI for no sound
return;
}
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_SPEAKER_STATS, (Object) speakerInfos);
}
}
@Override
public void onLeaveChannel(RtcStats stats) {
}
@Override
public void onLastmileQuality(int quality) {
Log.i("onLastmileQuality " + quality);
}
@Override
public void onError(int error) {
Log.i("onError " + error);
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_AGORA_MEDIA_ERROR, error, RtcEngine.getErrorDescription(error));
}
}
@Override
public void onAudioQuality(int uid, int quality, short delay, short lost) {
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_AUDIO_QUALITY, uid, quality, delay, lost);
}
}
@Override
public void onConnectionLost() {
Log.i("onConnectionLost");
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_APP_ERROR, ConstantApp.AppError.NO_NETWORK_CONNECTION);
}
}
@Override
public void onConnectionInterrupted() {
Log.i("onConnectionInterrupted");
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_APP_ERROR, ConstantApp.AppError.NO_NETWORK_CONNECTION);
}
}
@Override
public void onJoinChannelSuccess(String channel, int uid, int elapsed) {
Log.i("onJoinChannelSuccess " + channel + " " + (uid & 0xFFFFFFFFL) + " " + elapsed);
mConfig.mUid = uid;
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onJoinChannelSuccess(channel, uid, elapsed);
}
}
public void onRejoinChannelSuccess(String channel, int uid, int elapsed) {
Log.i("onRejoinChannelSuccess " + channel + " " + (uid & 0xFFFFFFFFL) + " " + elapsed);
}
public void onWarning(int warn) {
Log.i("onWarning " + warn);
}
@Override
public void onAudioRouteChanged(int routing) {
Log.i("onAudioRouteChanged " + routing);
Iterator<AGEventHandler> it = mEventHandlerList.keySet().iterator();
while (it.hasNext()) {
AGEventHandler handler = it.next();
handler.onExtraCallback(AGEventHandler.EVENT_TYPE_ON_AUDIO_ROUTE_CHANGED, routing);
}
}
};
}