From 03917b80088c9befbff693ad9e56443c5ed936b2 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 6 Jun 2019 14:48:27 +0200 Subject: [PATCH] Improve code Signed-off-by: Mario Danic --- app/src/main/AndroidManifest.xml | 66 ++++++++++--------- .../talk/controllers/CallController.java | 44 +++++-------- 2 files changed, 52 insertions(+), 58 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 554dadd30..e7caf6361 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,40 +19,42 @@ --> + xmlns:tools="http://schemas.android.com/tools" + package="com.nextcloud.talk"> + android:required="false" /> + android:required="false" /> + android:required="true" /> - - + android:maxSdkVersion="22" /> + + - - - - - - - + android:maxSdkVersion="22" /> + + + + + + + + + - - + android:maxSdkVersion="22" /> + + @@ -64,51 +66,51 @@ android:fullBackupContent="@xml/backup_config" android:icon="@mipmap/ic_launcher" android:label="@string/nc_app_name" + android:largeHeap="true" android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true" android:theme="@style/AppTheme" - tools:replace="label, icon, theme, name, allowBackup" - tools:ignore="UnusedAttribute"> - + tools:ignore="UnusedAttribute" + tools:replace="label, icon, theme, name, allowBackup"> + android:value="10" /> - - + + + android:launchMode="singleTask" /> - + + android:name="com.novoda.merlin.MerlinService" + android:exported="false" /> + android:grantUriPermissions="true"> + android:resource="@xml/file_provider_paths" /> diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index e8a866e68..89cafc7ef 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -166,8 +166,6 @@ public class CallController extends BaseController { private AudioTrack localAudioTrack; private VideoCapturer videoCapturer; private EglBase rootEglBase; - private boolean leavingCall = false; - private boolean connectedToCall = false; private Disposable signalingDisposable; private Disposable pingDisposable; private List iceServers; @@ -187,7 +185,6 @@ public class CallController extends BaseController { private boolean needsPing = true; private boolean isVoiceOnlyCall; - private boolean isFromNotification; private Handler callControlHandler = new Handler(); private Handler cameraSwitchHandler = new Handler(); @@ -215,7 +212,7 @@ public class CallController extends BaseController { @Parcel public enum CallStatus { - CALLING, CALLING_TIMEOUT, ESTABLISHED, RECONNECTING, OFFLINE + CALLING, CALLING_TIMEOUT, ESTABLISHED, RECONNECTING, OFFLINE, LEAVING } public CallController(Bundle args) { @@ -236,7 +233,6 @@ public class CallController extends BaseController { baseUrl = conversationUser.getBaseUrl(); } - isFromNotification = TextUtils.isEmpty(roomToken); powerManagerUtils = new PowerManagerUtils(); currentCallStatus = CallStatus.CALLING; } @@ -434,7 +430,7 @@ public class CallController extends BaseController { } } - if (!connectedToCall) { + if (!currentCallStatus.equals(CallStatus.ESTABLISHED)) { fetchSignalingSettings(); } } else if (getActivity() != null && EffortlessPermissions.somePermissionPermanentlyDenied(getActivity(), @@ -473,7 +469,7 @@ public class CallController extends BaseController { microphoneControlButton.getHierarchy().setPlaceholderImage(R.drawable.ic_mic_off_white_24px); } - if (!connectedToCall) { + if (!currentCallStatus.equals(CallStatus.ESTABLISHED)) { fetchSignalingSettings(); } } @@ -491,7 +487,7 @@ public class CallController extends BaseController { if (getActivity() != null && (EffortlessPermissions.hasPermissions(getActivity(), PERMISSIONS_CAMERA) || EffortlessPermissions.hasPermissions(getActivity(), PERMISSIONS_MICROPHONE))) { checkIfSomeAreApproved(); - } else if (!connectedToCall) { + } else if (!currentCallStatus.equals(CallStatus.ESTABLISHED)) { fetchSignalingSettings(); } } @@ -641,7 +637,7 @@ public class CallController extends BaseController { toggleMedia(true, false); } - if (isVoiceOnlyCall && !connectedToCall) { + if (isVoiceOnlyCall && !currentCallStatus.equals(CallStatus.ESTABLISHED)) { fetchSignalingSettings(); } @@ -663,6 +659,7 @@ public class CallController extends BaseController { @OnClick(R.id.callControlHangupView) void onHangupClick() { + currentCallStatus = CallStatus.LEAVING; hangup(true); } @@ -758,7 +755,7 @@ public class CallController extends BaseController { } } - if (connectedToCall) { + if (currentCallStatus.equals(CallStatus.ESTABLISHED)) { if (!hasMCU) { for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) { magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message)); @@ -871,8 +868,6 @@ public class CallController extends BaseController { } private void fetchSignalingSettings() { - leavingCall = false; - ncApi.getSignalingSettings(credentials, ApiUtils.getUrlForSignalingSettings(baseUrl)) .subscribeOn(Schedulers.io()) .retry(3) @@ -1063,8 +1058,7 @@ public class CallController extends BaseController { @Override public void onNext(GenericOverall genericOverall) { - connectedToCall = true; - currentCallStatus = CallStatus.CALLING; + currentCallStatus = CallStatus.ESTABLISHED; if (connectingView != null) { connectingView.setVisibility(View.GONE); @@ -1085,8 +1079,8 @@ public class CallController extends BaseController { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) - .takeWhile(observable -> connectedToCall) - .retry(3, observable -> connectedToCall) + .takeWhile(observable -> currentCallStatus.equals(CallStatus.ESTABLISHED)) + .retry(3, observable -> currentCallStatus.equals(CallStatus.ESTABLISHED)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -1127,8 +1121,8 @@ public class CallController extends BaseController { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .repeatWhen(observable -> observable) - .takeWhile(observable -> connectedToCall) - .retry(3, observable -> connectedToCall) + .takeWhile(observable -> currentCallStatus.equals(CallStatus.ESTABLISHED)) + .retry(3, observable -> currentCallStatus.equals(CallStatus.ESTABLISHED)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -1252,7 +1246,7 @@ public class CallController extends BaseController { private void receivedSignalingMessage(Signaling signaling) throws IOException { String messageType = signaling.getType(); - if (leavingCall) { + if (!currentCallStatus.equals(CallStatus.ESTABLISHED)) { return; } @@ -1322,11 +1316,9 @@ public class CallController extends BaseController { } private void hangup(boolean shutDownView) { - - leavingCall = true; - connectedToCall = false; - + dispose(null); if (shutDownView) { + if (videoCapturer != null) { try { videoCapturer.stopCapture(); @@ -1488,7 +1480,7 @@ public class CallController extends BaseController { // Calculate sessions that join the call newSessions.removeAll(oldSesssions); - if (leavingCall) { + if (!currentCallStatus.equals(CallStatus.ESTABLISHED)) { return; } @@ -1670,7 +1662,7 @@ public class CallController extends BaseController { boolean enableVideo = peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent .PeerConnectionEventType.SENSOR_FAR) && videoOn; if (getActivity() != null && EffortlessPermissions.hasPermissions(getActivity(), PERMISSIONS_CAMERA) && - connectedToCall && videoOn + (currentCallStatus.equals(CallStatus.CALLING) || currentCallStatus.equals(CallStatus.ESTABLISHED)) && videoOn && enableVideo != localVideoTrack.enabled()) { toggleMedia(enableVideo, true); } @@ -1701,7 +1693,7 @@ public class CallController extends BaseController { int finalI = i; Observable .interval(1, TimeUnit.SECONDS) - .takeWhile(observer -> connectedToCall) + .takeWhile(observer -> currentCallStatus.equals(CallStatus.ESTABLISHED)) .observeOn(Schedulers.io()) .doOnNext(n -> magicPeerConnectionWrapperList.get(finalI).sendChannelData(dataChannelMessage)); break;