mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
parent
4697e4f340
commit
69c4435b1e
@ -878,7 +878,9 @@ public class CallController extends BaseController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
onHangupClick();
|
if (!currentCallStatus.equals(CallStatus.LEAVING)) {
|
||||||
|
onHangupClick();
|
||||||
|
}
|
||||||
powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.IDLE);
|
powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.IDLE);
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
@ -1074,91 +1076,93 @@ public class CallController extends BaseController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(GenericOverall genericOverall) {
|
public void onNext(GenericOverall genericOverall) {
|
||||||
setCallState(CallStatus.ESTABLISHED);
|
if (!currentCallStatus.equals(CallStatus.LEAVING)) {
|
||||||
|
setCallState(CallStatus.ESTABLISHED);
|
||||||
|
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
|
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
|
||||||
|
|
||||||
if (needsPing) {
|
if (needsPing) {
|
||||||
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
|
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
|
.repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
|
||||||
.takeWhile(observable -> isConnectionEstablished())
|
.takeWhile(observable -> isConnectionEstablished())
|
||||||
.retry(3, observable -> isConnectionEstablished())
|
.retry(3, observable -> isConnectionEstablished())
|
||||||
.subscribe(new Observer<GenericOverall>() {
|
.subscribe(new Observer<GenericOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
pingDisposable = d;
|
pingDisposable = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(GenericOverall genericOverall) {
|
public void onNext(GenericOverall genericOverall) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
dispose(pingDisposable);
|
dispose(pingDisposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
dispose(pingDisposable);
|
dispose(pingDisposable);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start pulling signaling messages
|
// Start pulling signaling messages
|
||||||
String urlToken = null;
|
String urlToken = null;
|
||||||
if (isMultiSession) {
|
if (isMultiSession) {
|
||||||
urlToken = roomToken;
|
urlToken = roomToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!conversationUser.hasSpreedFeatureCapability("no-ping") && !TextUtils.isEmpty(roomId)) {
|
if (!conversationUser.hasSpreedFeatureCapability("no-ping") && !TextUtils.isEmpty(roomId)) {
|
||||||
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomId);
|
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomId);
|
||||||
} else if (!TextUtils.isEmpty(roomToken)) {
|
} else if (!TextUtils.isEmpty(roomToken)) {
|
||||||
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomToken);
|
NotificationUtils.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasExternalSignalingServer) {
|
if (!hasExternalSignalingServer) {
|
||||||
ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(baseUrl, urlToken))
|
ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(baseUrl, urlToken))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.repeatWhen(observable -> observable)
|
.repeatWhen(observable -> observable)
|
||||||
.takeWhile(observable -> isConnectionEstablished())
|
.takeWhile(observable -> isConnectionEstablished())
|
||||||
.retry(3, observable -> isConnectionEstablished())
|
.retry(3, observable -> isConnectionEstablished())
|
||||||
.subscribe(new Observer<SignalingOverall>() {
|
.subscribe(new Observer<SignalingOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
signalingDisposable = d;
|
signalingDisposable = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(SignalingOverall signalingOverall) {
|
public void onNext(SignalingOverall signalingOverall) {
|
||||||
if (signalingOverall.getOcs().getSignalings() != null) {
|
if (signalingOverall.getOcs().getSignalings() != null) {
|
||||||
for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) {
|
for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) {
|
||||||
try {
|
try {
|
||||||
receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i));
|
receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, "Failed to process received signaling" +
|
Log.e(TAG, "Failed to process received signaling" +
|
||||||
" message");
|
" message");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
dispose(signalingDisposable);
|
dispose(signalingDisposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
dispose(signalingDisposable);
|
dispose(signalingDisposable);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1331,6 +1335,7 @@ public class CallController extends BaseController {
|
|||||||
private void hangup(boolean shutDownView) {
|
private void hangup(boolean shutDownView) {
|
||||||
stopCallingSound();
|
stopCallingSound();
|
||||||
dispose(null);
|
dispose(null);
|
||||||
|
|
||||||
if (shutDownView) {
|
if (shutDownView) {
|
||||||
|
|
||||||
if (videoCapturer != null) {
|
if (videoCapturer != null) {
|
||||||
@ -2261,20 +2266,20 @@ public class CallController extends BaseController {
|
|||||||
handler.removeCallbacksAndMessages(null);
|
handler.removeCallbacksAndMessages(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasMCU) {
|
/*if (!hasMCU) {
|
||||||
setCallState(CallStatus.RECONNECTING);
|
setCallState(CallStatus.RECONNECTING);
|
||||||
hangupNetworkCalls(false);
|
hangupNetworkCalls(false);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
} else if (networkEvent.getNetworkConnectionEvent().equals(NetworkEvent.NetworkConnectionEvent.NETWORK_DISCONNECTED)) {
|
} else if (networkEvent.getNetworkConnectionEvent().equals(NetworkEvent.NetworkConnectionEvent.NETWORK_DISCONNECTED)) {
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
handler.removeCallbacksAndMessages(null);
|
handler.removeCallbacksAndMessages(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasMCU) {
|
/* if (!hasMCU) {
|
||||||
setCallState(CallStatus.OFFLINE);
|
setCallState(CallStatus.OFFLINE);
|
||||||
hangup(false);
|
hangup(false);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user