This commit is contained in:
2023-10-20 18:25:06 +08:00
parent 0935f76bac
commit d3ab50e844
56 changed files with 2645 additions and 135 deletions

View File

@@ -8,7 +8,11 @@ import android.text.TextUtils;
import android.view.SurfaceView;
import com.blankj.utilcode.util.PermissionUtils;
import com.shayu.onetoone.bean.SendConsumeBean;
import com.shayu.onetoone.listener.OnCallStatusListener;
import com.shayu.onetoone.listener.OnSendMessageListener;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import java.util.ArrayList;
@@ -75,11 +79,19 @@ public class CallClientManager {
listeners.remove(statusListener);
}
private void startTimer() {
public void checkMoney(String targetId, boolean video, OnSendMessageListener listener) {
if (video) {
SendMessageManager.checkVideoMessage(targetId, "1", listener);
} else {
SendMessageManager.checkAudioMessage(targetId, "1", listener);
}
}
private void startTimer(String targetId) {
if (timeTask != null) {
timeTask.cancel();
}
timeTask = new CallTimeTask();
timeTask = new CallTimeTask(targetId);
new Timer().schedule(timeTask, 0, 1000);
}
@@ -106,7 +118,7 @@ public class CallClientManager {
listener.onCallStart(userId, remoteVideo);
}
ToastUtil.show("连接成功");
startTimer();
startTimer(targetId);
}
@Override
@@ -145,7 +157,7 @@ public class CallClientManager {
listener.onCallStart(userId, remoteVideo);
}
ToastUtil.show("连接成功");
startTimer();
startTimer(targetId);
}
@Override
@@ -182,7 +194,7 @@ public class CallClientManager {
for (OnCallStatusListener listener : listeners) {
listener.onCallStart(userId, remoteVideo);
}
startTimer();
startTimer(null);
}
@Override
@@ -224,6 +236,30 @@ public class CallClientManager {
private class CallTimeTask extends TimerTask {
Handler handler = new Handler(Looper.getMainLooper());
private String targetId;
private boolean isCallVideo = false;
long warningTime;
long activeTime;
public CallTimeTask(String targetId) {
this.targetId = targetId;
}
@Override
public boolean cancel() {
long time = getTime(activeTime);
time = time % 10;
if (time == 0) {
time = 10;
}
if (isCallVideo) {
SendMessageManager.pingVideoMessage(targetId, time + "", new SendMessageListener());
} else {
SendMessageManager.pingAudioMessage(targetId, time + "", new SendMessageListener());
}
return super.cancel();
}
@Override
public void run() {
RongCallSession callSession = RongCallClient.getInstance().getCallSession();
@@ -232,7 +268,10 @@ public class CallClientManager {
timeTask = null;
return;
}
long time = getTime(callSession.getActiveTime());
isCallVideo = callSession.getMediaType() == RongCallCommon.CallMediaType.VIDEO;
activeTime = callSession.getActiveTime();
long time = getTime(activeTime);
checkTime(time);
String extra;
if (time > 0) {
if (time >= 3600) {
@@ -249,11 +288,57 @@ public class CallClientManager {
handler.post(() -> {
for (OnCallStatusListener listener : listeners) {
listener.onTime(extra);
listener.onTimeWarning(warningTime--);
}
});
}
}
private void checkTime(long time) {
if (StringUtil.isEmpty(targetId)) {
return;
}
time = time % 10;
if (time == 0) {
time = 10;
} else {
return;
}
if (isCallVideo) {
SendMessageManager.pingVideoMessage(targetId, time + "", new SendMessageListener());
} else {
SendMessageManager.pingAudioMessage(targetId, time + "", new SendMessageListener());
}
}
private class SendMessageListener extends OnSendMessageListener {
@Override
public void onSuccess(String token, SendConsumeBean bean) {
super.onSuccess(token, bean);
if (isCallVideo) {
warningTime = bean.getVideoTime();
} else {
warningTime = bean.getMp3Time();
}
if (warningTime <= 60) {
for (OnCallStatusListener listener : listeners) {
listener.onTimeWarning(warningTime);
}
}
}
@Override
public void onError(int status, String msg) {
super.onError(status, msg);
if (status == OnSendMessageListener.STATUS_NOT_PRICE) {
for (OnCallStatusListener listener : listeners) {
listener.onErrorNotPrice(msg);
}
endCall();
}
}
}
}
@@ -435,12 +520,12 @@ public class CallClientManager {
* 如果对端调用{@link RongCallClient#startCall(int, boolean, Conversation.ConversationType, String, List, List, RongCallCommon.CallMediaType, String, StartCameraCallback)} 或
* {@link RongCallClient#acceptCall(String, int, boolean, StartCameraCallback)}开始的音视频通话,则可以使用如下设置改变对端视频流的镜像显示:<br />
* <pre class="prettyprint">
* public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
* if (null != remoteVideo) {
* ((RongRTCVideoView) remoteVideo).setMirror( boolean);//观看对方视频流是否镜像处理
* }
* }
* </pre>
* public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
* if (null != remoteVideo) {
* ((RongRTCVideoView) remoteVideo).setMirror( boolean);//观看对方视频流是否镜像处理
* }
* }
* </pre>
*/
@Override
public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {