From d8d6169b11d08d2fff04dc4e23d6e76819fda851 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Wed, 22 Apr 2020 14:07:36 +0300 Subject: [PATCH 1/2] -fixed incomming ringing calls -NY-9746: [AN]: Issues with incoming call notifications on locked screen -NY-9238: [AN]: Incoming push notifications and calls are not showing while Nynja application is closed. -NY-9518: Android will stop ringing after a couple rings --- .../mobile/communicator/data/DataManager.java | 4 +- .../data/FireBaseMessagingService.java | 6 +-- .../data/sdk/calls/ConferenceSDKModule.java | 50 +++++++++---------- .../mvp/presenters/MainActivityPresenter.kt | 2 + .../ui/activities/MainActivity.java | 5 +- .../communicator/ui/base/BaseActivity.java | 8 ++- 6 files changed, 38 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java index 7c22e9c679..4d5896c007 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java @@ -243,8 +243,8 @@ public class DataManager { private ProfileSyncManager mProfileSyncManager; private DbCashManager mDbChatsCashManager; private RoomModel mActiveRoom = null; - private boolean mIsMainActivityActive; - private boolean mIsInBackground; + private boolean mIsMainActivityActive = false; + private boolean mIsInBackground = true; private boolean mIsRootAlreadyShown = false; private boolean mIsWheelPositionRight; private Long rosterId; diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/FireBaseMessagingService.java b/app/src/main/java/com/nynja/mobile/communicator/data/FireBaseMessagingService.java index cf52f640a3..48a6b942d1 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/FireBaseMessagingService.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/FireBaseMessagingService.java @@ -107,7 +107,7 @@ public class FireBaseMessagingService extends FirebaseMessagingService { if(model == null) break; Timber.i(model.toString()); if (mDataManager.getSettingNotifications().isCallNotifications()) { - boolean isMainActivityIsActive = mDataManager.isMainActivityIsActive(); + boolean isMainActivityIsActive = !mDataManager.isInBackground();//isMainActivityIsActive(); if (!isMainActivityIsActive) { mDataManager.reconnectConference(); } @@ -265,7 +265,7 @@ public class FireBaseMessagingService extends FirebaseMessagingService { String callId = mDataManager.getConferenceSDK().getActiveConference().mConference.callId(); boolean isInBackground = mDataManager.isInBackground(); Notification notification = mNotificationHelper.createCallPushNotification(context, from, callId, - isMainActivityIsActive, + isInBackground, //isMainActivityIsActive, mDataManager.getSettingNotifications()); Timber.i("Push.CALLING: handleConferencePushNotification(): handleCallPush XXXX" + "; hasActiveCall=" + (hasActiveCall?"true": "false")); @@ -283,7 +283,7 @@ public class FireBaseMessagingService extends FirebaseMessagingService { boolean isCallRinging = mDataManager.getConferenceSDK().isCallRinging(); Timber.i("Push.CALLING: handleConferencePushNotification()=" + (result?"true": "false") + "; isCallRinging="+ (isCallRinging?"true": "false") + "; startActivity=" + (startActivity?"true": "false")); - if (result && !startActivity && isCallRinging) { + if (result && !startActivity && isCallRinging && !hasActiveCall) { sendCallPush(this, isMainActivityIsActive, hasActiveCall); } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java index 17102aa940..18ccff2c40 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java @@ -346,14 +346,10 @@ public class ConferenceSDKModule extends BaseSDKModule { } private void clearConference() { - mActiveConference = null; - mConferenceDetails = null; - isSpeakerPhoneForced = false; - } - private synchronized void clearSyncConference() { mActiveConference = null; mConferenceDetails = null; + isSpeakerPhoneForced = false; } private void endConference() { @@ -500,6 +496,7 @@ public class ConferenceSDKModule extends BaseSDKModule { } else if (!hasCreatedActiveCall()) { Timber.i("ConferenceSDKModule::handlePushNotification(): push mActiveConference=null"); startApplicationActivity(); + return true; } } } @@ -2696,30 +2693,36 @@ public class ConferenceSDKModule extends BaseSDKModule { mRouter.backOrNavigateTo(screenKey, data); } - - public void startIncommingActivity(boolean delayed) { + public void startIncommingActivity(boolean delayed, String screenKey) { + if (screenKey == null) screenKey = NynjaNavigator.MAIN_NEW_CALL; + String finalScreenKey = screenKey; if (delayed) { new Handler(Looper.getMainLooper()).postDelayed(() -> { NynjaRouter mRouter = NynjaApp.getComponent().router(); - mRouter.navigateTo(NynjaNavigator.MAIN_NEW_CALL, false); - }, Consts.DELAY_1000); + mRouter.navigateTo(finalScreenKey, false); + }, Consts.SECOND); } else { new Handler(Looper.getMainLooper()).post(() -> { NynjaRouter mRouter = NynjaApp.getComponent().router(); - mRouter.navigateTo(NynjaNavigator.MAIN_NEW_CALL, false); + mRouter.navigateTo(finalScreenKey, false); }); } } - public void startIncommingConferenceActivity(boolean delayed) { - if (!mStateDevice.isDeviceActive()) { - // launch the activity since the navigation router is unset (while the app is on background) - Intent newIntent = MainActivity.getLaunchIntent(getContext(), false, true); - getContext().startActivity(newIntent); - return; + public boolean startIncommingConferenceActivity(boolean delayed, String callId, String screenKey) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && callId != null) { + new Handler(Looper.getMainLooper()).post(() -> { + mNotificationHelper.createCallPushNotification(getContext(), mActiveConference.getCallerName(), callId, true, + mSettingNotifications); + }); + return true; + } else if (!mStateDevice.isDeviceActive()) { + // launch the activity since the navigation router is unset (while the app is on background) + Intent newIntent = MainActivity.getLaunchIntent(getContext(), false, screenKey != null); + getContext().startActivity(newIntent); + return true; } - - startIncommingActivity(delayed); + return false; } private void stopTimer() { @@ -2849,13 +2852,8 @@ public class ConferenceSDKModule extends BaseSDKModule { mNotificationHelper.createCallPushNotification(getContext(), mActiveConference.getCallerName(), callId, true, mSettingNotifications); }); - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - new Handler(Looper.getMainLooper()).post(() -> { - mNotificationHelper.createCallPushNotification(getContext(), mActiveConference.getCallerName(), callId, true, - mSettingNotifications); - }); - } else { - startIncommingConferenceActivity(delayed); + } else if (!startIncommingConferenceActivity(delayed, callId, null)) { + startIncommingActivity(delayed, NynjaNavigator.MAIN_NEW_CALL); } } return true; @@ -3136,7 +3134,7 @@ public class ConferenceSDKModule extends BaseSDKModule { mConferenceAudioManager.stop(); } stopRinging(); - clearSyncConference(); + clearConference(); for (ConferenceSDKListener conferenceSDKListener : mConferenceSDKListener) { if (join) { conferenceSDKListener.onConferenceJoinFailed(reason); diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt index e36d21205d..0c316fd03e 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt @@ -830,6 +830,8 @@ class MainActivityPresenter : ConferenceSDKPresenter() { fun navigateToIncommingCall() { if (!mDataManager.getConferenceSDK().isConferenceActive()) return + if (mDataManager.conferenceSDK.startIncommingConferenceActivity(true, + null, NynjaNavigator.INCOMMING_CALL)) return; mRouter.navigateTo(NynjaNavigator.INCOMMING_CALL) } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java index 714434553c..c69544ec50 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java @@ -372,7 +372,10 @@ public class MainActivity extends BaseActivity implements MainActivityView, } else { headerStatusText.setText(R.string.call_ringing); wakeLock(); - mPresenter.navigateToIncommingCall(); + mHandler.postDelayed(() -> { + mPresenter.navigateToIncommingCall(); + }, Consts.DELAY_100); + } } } else if (intent.hasExtra(FRAGMENT_BUNDLE_NAME) && intent.getExtras() != null) { diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseActivity.java index 4733883c1f..20f9a06d76 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseActivity.java @@ -361,16 +361,14 @@ public abstract class BaseActivity extends MvpAppCompatActivity implements BaseA mSystemIsInteractive = isActive; } - if (isActive) return; - wakeLockActivity(); } protected void wakeLockActivity() { if (mWindowFlags == 0xFFFFFFFF) { - if ((this instanceof IncomeCallActivity || - this instanceof CallActivity) && - mSystemIsInteractive) return; +// if ((this instanceof IncomeCallActivity || +// this instanceof CallActivity) && +// mSystemIsInteractive) return; Timber.i("#### # wakeLockActivity " + getClass().getSimpleName()); mWindowFlags = getWindow().getAttributes().flags; getWindow().addFlags(CallUtils.activityWakeLockFlags); -- GitLab From 72a564b5f14169a10d6096b3076db1de50e2ac89 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Wed, 22 Apr 2020 15:27:50 +0300 Subject: [PATCH 2/2] NY-10027: [AN]: Call is not started on pressing "Conference link" inside nynja --- .../mobile/communicator/ui/activities/MainActivity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java index c69544ec50..403c7c9541 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java @@ -237,7 +237,6 @@ public class MainActivity extends BaseActivity implements MainActivityView, protected void onStart() { super.onStart(); requestStoragePermissions(); - mPresenter.isComingFromLink(); } @Override @@ -314,7 +313,10 @@ public class MainActivity extends BaseActivity implements MainActivityView, //TODO need refactoring private void handleIntent() { - if (getIntent() == null || getIntent().getExtras() == null) return; + if (getIntent() == null || getIntent().getExtras() == null) { + mPresenter.isComingFromLink(); + return; + } final Intent intent = getIntent(); if (Intent.ACTION_SEND.equals(intent.getAction()) && intent.getType() != null) { if (!mPresenter.isLogIn()) { -- GitLab