From 6e8d2cf7dd47963d2dbac5238534a50e84aa5518 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 17 Jul 2019 15:08:57 +0200 Subject: [PATCH] Fixed auto answer + go back to incoming/outgoing call buttons --- .../java/org/linphone/LinphoneManager.java | 7 ++-- .../linphone/activities/DialerActivity.java | 3 +- .../org/linphone/activities/MainActivity.java | 33 +++++++++++++++++++ .../org/linphone/call/VideoZoomHelper.java | 8 ++--- .../linphone/chat/ChatMessagesFragment.java | 4 +-- .../org/linphone/chat/ChatRoomsFragment.java | 5 ++- app/src/main/res/layout/call_outgoing.xml | 6 ---- 7 files changed, 44 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneManager.java b/app/src/main/java/org/linphone/LinphoneManager.java index ea480aeb4..ca4799dc5 100644 --- a/app/src/main/java/org/linphone/LinphoneManager.java +++ b/app/src/main/java/org/linphone/LinphoneManager.java @@ -96,7 +96,7 @@ public class LinphoneManager implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mProximity; private final MediaScanner mMediaScanner; - private Timer mTimer; + private Timer mTimer, mAutoAnswerTimer; private final Handler mHandler = new Handler(); private final LinphonePreferences mPrefs; @@ -231,8 +231,8 @@ public class LinphoneManager implements SensorEventListener { } } }; - mTimer = new Timer("Auto answer"); - mTimer.schedule(lTask, mPrefs.getAutoAnswerTime()); + mAutoAnswerTimer = new Timer("Auto answer"); + mAutoAnswerTimer.schedule(lTask, mPrefs.getAutoAnswerTime()); } else if (state == State.End || state == State.Error) { if (mCore.getCallsNb() == 0) { // Disabling proximity sensor @@ -424,6 +424,7 @@ public class LinphoneManager implements SensorEventListener { try { mTimer.cancel(); + if (mAutoAnswerTimer != null) mAutoAnswerTimer.cancel(); destroyCore(); } catch (RuntimeException e) { Log.e("[Manager] Destroy Core Runtime Exception: " + e); diff --git a/app/src/main/java/org/linphone/activities/DialerActivity.java b/app/src/main/java/org/linphone/activities/DialerActivity.java index 79b5e3866..50242a568 100644 --- a/app/src/main/java/org/linphone/activities/DialerActivity.java +++ b/app/src/main/java/org/linphone/activities/DialerActivity.java @@ -35,7 +35,6 @@ import java.util.ArrayList; import java.util.Collection; import org.linphone.LinphoneManager; import org.linphone.R; -import org.linphone.call.CallActivity; import org.linphone.contacts.ContactsActivity; import org.linphone.contacts.ContactsManager; import org.linphone.core.Call; @@ -184,7 +183,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC new View.OnClickListener() { @Override public void onClick(View v) { - startActivity(new Intent(DialerActivity.this, CallActivity.class)); + goBackToCall(); } }); diff --git a/app/src/main/java/org/linphone/activities/MainActivity.java b/app/src/main/java/org/linphone/activities/MainActivity.java index f51641d11..889699ab3 100644 --- a/app/src/main/java/org/linphone/activities/MainActivity.java +++ b/app/src/main/java/org/linphone/activities/MainActivity.java @@ -47,6 +47,9 @@ import java.util.ArrayList; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.R; +import org.linphone.call.CallActivity; +import org.linphone.call.CallIncomingActivity; +import org.linphone.call.CallOutgoingActivity; import org.linphone.chat.ChatActivity; import org.linphone.compatibility.Compatibility; import org.linphone.contacts.ContactsActivity; @@ -593,6 +596,36 @@ public abstract class MainActivity extends LinphoneGenericActivity // Navigation between actvities + public void goBackToCall() { + boolean incoming = false; + boolean outgoing = false; + Call[] calls = LinphoneManager.getCore().getCalls(); + + for (Call call : calls) { + Call.State state = call.getState(); + switch (state) { + case IncomingEarlyMedia: + case IncomingReceived: + incoming = true; + break; + case OutgoingEarlyMedia: + case OutgoingInit: + case OutgoingProgress: + case OutgoingRinging: + outgoing = true; + break; + } + } + + if (incoming) { + startActivity(new Intent(this, CallIncomingActivity.class)); + } else if (outgoing) { + startActivity(new Intent(this, CallOutgoingActivity.class)); + } else { + startActivity(new Intent(this, CallActivity.class)); + } + } + private void addFlagsToIntent(Intent intent) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); } diff --git a/app/src/main/java/org/linphone/call/VideoZoomHelper.java b/app/src/main/java/org/linphone/call/VideoZoomHelper.java index a04ca1b09..c3b65357c 100644 --- a/app/src/main/java/org/linphone/call/VideoZoomHelper.java +++ b/app/src/main/java/org/linphone/call/VideoZoomHelper.java @@ -33,16 +33,14 @@ import org.linphone.utils.LinphoneUtils; public class VideoZoomHelper extends GestureDetector.SimpleOnGestureListener implements CompatibilityScaleGestureListener { private View mVideoView; - private Context mContext; private GestureDetector mGestureDetector; private float mZoomFactor = 1.f; private float mZoomCenterX, mZoomCenterY; private CompatibilityScaleGestureDetector mScaleDetector; public VideoZoomHelper(Context context, View videoView) { - mContext = context; - mGestureDetector = new GestureDetector(mContext, this); - mScaleDetector = new CompatibilityScaleGestureDetector(mContext); + mGestureDetector = new GestureDetector(context, this); + mScaleDetector = new CompatibilityScaleGestureDetector(context); mScaleDetector.setOnScaleListener(this); mVideoView = videoView; @@ -146,8 +144,6 @@ public class VideoZoomHelper extends GestureDetector.SimpleOnGestureListener } public void destroy() { - mContext = null; - if (mVideoView != null) { mVideoView.setOnTouchListener(null); mVideoView = null; diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index 4b6aed1e4..8a1853f25 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -64,7 +64,7 @@ import java.util.List; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.R; -import org.linphone.call.CallActivity; +import org.linphone.activities.MainActivity; import org.linphone.contacts.ContactAddress; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.ContactsUpdatedListener; @@ -209,7 +209,7 @@ public class ChatMessagesFragment extends Fragment new View.OnClickListener() { @Override public void onClick(View view) { - startActivity(new Intent(getActivity(), CallActivity.class)); + ((MainActivity) getActivity()).goBackToCall(); } }); diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java index 3750944e2..ee5409c5e 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java @@ -20,7 +20,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import android.app.Fragment; -import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -35,7 +34,7 @@ import java.util.Arrays; import java.util.List; import org.linphone.LinphoneManager; import org.linphone.R; -import org.linphone.call.CallActivity; +import org.linphone.activities.MainActivity; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.ContactsUpdatedListener; import org.linphone.core.ChatMessage; @@ -126,7 +125,7 @@ public class ChatRoomsFragment extends Fragment new View.OnClickListener() { @Override public void onClick(View v) { - startActivity(new Intent(getActivity(), CallActivity.class)); + ((MainActivity) getActivity()).goBackToCall(); } }); diff --git a/app/src/main/res/layout/call_outgoing.xml b/app/src/main/res/layout/call_outgoing.xml index 8535a2ad9..eff3183c5 100644 --- a/app/src/main/res/layout/call_outgoing.xml +++ b/app/src/main/res/layout/call_outgoing.xml @@ -72,12 +72,6 @@ - -