From 45254d3261f108fccd38bdbc59b0ebf912d3fcef Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 17 Jun 2019 15:44:11 +0200 Subject: [PATCH] Performances improvements --- .../java/org/linphone/LinphoneManager.java | 2 + .../linphone/activities/DialerActivity.java | 41 +++++----- .../java/org/linphone/call/CallActivity.java | 11 ++- .../linphone/contacts/ContactsManager.java | 4 +- .../linphone/contacts/LinphoneContact.java | 9 +-- .../main/java/org/linphone/views/Digit.java | 23 +++--- .../main/java/org/linphone/views/Numpad.java | 74 ------------------- app/src/main/res/layout-land/call.xml | 5 +- app/src/main/res/layout-land/dialer.xml | 20 ----- .../main/res/layout-sw533dp-land/dialer.xml | 4 +- app/src/main/res/layout-sw533dp/dialer.xml | 4 +- app/src/main/res/layout/call.xml | 5 +- app/src/main/res/layout/call_incoming.xml | 3 +- app/src/main/res/layout/chatlist.xml | 1 - app/src/main/res/layout/chatlist_cell.xml | 1 - app/src/main/res/layout/dialer.xml | 11 +-- app/src/main/res/layout/numpad.xml | 7 +- app/src/main/res/values/digit_style.xml | 1 - .../res/values/non_localizable_custom.xml | 2 +- 19 files changed, 66 insertions(+), 162 deletions(-) delete mode 100644 app/src/main/java/org/linphone/views/Numpad.java diff --git a/app/src/main/java/org/linphone/LinphoneManager.java b/app/src/main/java/org/linphone/LinphoneManager.java index cc545dc5d..398e99f60 100644 --- a/app/src/main/java/org/linphone/LinphoneManager.java +++ b/app/src/main/java/org/linphone/LinphoneManager.java @@ -441,11 +441,13 @@ public class LinphoneManager implements SensorEventListener { mPrefs.getLinphoneFactoryConfig(), mContext); mCore.addListener(mCoreListener); + if (isPush) { Log.w( "[Manager] We are here because of a received push notification, enter background mode before starting the Core"); mCore.enterBackground(); } + mCore.start(); TimerTask lTask = new TimerTask() { diff --git a/app/src/main/java/org/linphone/activities/DialerActivity.java b/app/src/main/java/org/linphone/activities/DialerActivity.java index 3bc537daf..98810d9a5 100644 --- a/app/src/main/java/org/linphone/activities/DialerActivity.java +++ b/app/src/main/java/org/linphone/activities/DialerActivity.java @@ -21,7 +21,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import android.Manifest; import android.content.Intent; -import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; @@ -30,6 +29,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; +import java.util.ArrayList; +import java.util.Collection; import org.linphone.LinphoneManager; import org.linphone.R; import org.linphone.call.CallActivity; @@ -40,15 +41,14 @@ import org.linphone.core.Core; import org.linphone.core.CoreListenerStub; import org.linphone.core.tools.Log; import org.linphone.settings.LinphonePreferences; -import org.linphone.views.AddressAware; import org.linphone.views.AddressText; import org.linphone.views.CallButton; +import org.linphone.views.Digit; import org.linphone.views.EraseButton; public class DialerActivity extends MainActivity implements AddressText.AddressChangedListener { private static final String ACTION_CALL_LINPHONE = "org.linphone.intent.action.CallLaunched"; - private AddressAware mNumpad; private AddressText mAddress; private CallButton mStartCall, mAddCall, mTransferCall; private ImageView mAddContact, mBackToCall; @@ -91,11 +91,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC mTransferCall.setAddressWidget(mAddress); mTransferCall.setIsTransfer(true); - mNumpad = findViewById(R.id.numpad); - if (mNumpad != null) { - mNumpad.setAddressWidget(mAddress); - } - mAddContact = findViewById(R.id.add_contact); mAddContact.setEnabled(false); mAddContact.setOnClickListener( @@ -144,6 +139,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC Manifest.permission.READ_CONTACTS }; + setUpNumpad(dialerView); handleIntentParams(getIntent()); } @@ -164,15 +160,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC core.addListener(mListener); } - boolean isOrientationLandscape = - getResources().getConfiguration().orientation - == Configuration.ORIENTATION_LANDSCAPE; - if (isOrientationLandscape && !isTablet()) { - ((LinearLayout) mNumpad).setVisibility(View.GONE); - } else { - ((LinearLayout) mNumpad).setVisibility(View.VISIBLE); - } - updateLayout(); enableVideoPreviewIfTablet(true); } @@ -296,4 +283,24 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC mAddress.setText(addressToCall); } } + + private void setUpNumpad(View view) { + if (view == null) return; + for (Digit v : retrieveChildren((ViewGroup) view, Digit.class)) { + v.setAddressWidget(mAddress); + } + } + + private Collection retrieveChildren(ViewGroup viewGroup, Class clazz) { + final Collection views = new ArrayList<>(); + for (int i = 0; i < viewGroup.getChildCount(); i++) { + View v = viewGroup.getChildAt(i); + if (v instanceof ViewGroup) { + views.addAll(retrieveChildren((ViewGroup) v, clazz)); + } else { + if (clazz.isInstance(v)) views.add(clazz.cast(v)); + } + } + return views; + } } diff --git a/app/src/main/java/org/linphone/call/CallActivity.java b/app/src/main/java/org/linphone/call/CallActivity.java index 7344c3218..91fe14444 100644 --- a/app/src/main/java/org/linphone/call/CallActivity.java +++ b/app/src/main/java/org/linphone/call/CallActivity.java @@ -70,7 +70,6 @@ import org.linphone.settings.LinphonePreferences; import org.linphone.utils.AndroidAudioManager; import org.linphone.utils.LinphoneUtils; import org.linphone.views.ContactAvatar; -import org.linphone.views.Numpad; public class CallActivity extends LinphoneGenericActivity implements CallStatusBarFragment.StatsClikedListener, @@ -109,7 +108,6 @@ public class CallActivity extends LinphoneGenericActivity private ImageView mPause, mSwitchCamera, mRecordingInProgress; private ImageView mExtrasButtons, mAddCall, mTransferCall, mRecordCall, mConference; private ImageView mAudioRoute, mRouteEarpiece, mRouteSpeaker, mRouteBluetooth; - private Numpad mNumpad; private TextView mContactName, mMissedMessages; private ProgressBar mVideoInviteInProgress; private Chronometer mCallTimer; @@ -300,15 +298,16 @@ public class CallActivity extends LinphoneGenericActivity } }); - mNumpad = findViewById(R.id.numpad); - ImageView numpadButton = findViewById(R.id.dialer); numpadButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { - mNumpad.setVisibility( - mNumpad.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); + findViewById(R.id.numpad) + .setVisibility( + findViewById(R.id.numpad).getVisibility() == View.VISIBLE + ? View.GONE + : View.VISIBLE); } }); diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.java b/app/src/main/java/org/linphone/contacts/ContactsManager.java index 0783e3297..3e678204c 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.java +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.java @@ -443,8 +443,8 @@ public class ContactsManager extends ContentObserver implements FriendListListen private synchronized boolean refreshSipContact(Friend lf) { LinphoneContact contact = (LinphoneContact) lf.getUserData(); - if (contact != null) { + if (contact != null) { if (LinphoneService.instance().getResources().getBoolean(R.bool.use_linphone_tag)) { // Inserting Linphone information in Android contact if the parameter is enabled if (LinphonePreferences.instance() @@ -457,10 +457,10 @@ public class ContactsManager extends ContentObserver implements FriendListListen if (!mSipContacts.contains(contact)) { mSipContacts.add(contact); - return true; } } + return false; } diff --git a/app/src/main/java/org/linphone/contacts/LinphoneContact.java b/app/src/main/java/org/linphone/contacts/LinphoneContact.java index 74478cd72..892ecd055 100644 --- a/app/src/main/java/org/linphone/contacts/LinphoneContact.java +++ b/app/src/main/java/org/linphone/contacts/LinphoneContact.java @@ -26,7 +26,6 @@ import android.provider.ContactsContract; import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.R; @@ -78,12 +77,8 @@ public class LinphoneContact extends AndroidContact @Override public int compareTo(LinphoneContact contact) { - String fullName = - getFullName() != null ? getFullName().toUpperCase(Locale.getDefault()) : ""; - String contactFullName = - contact.getFullName() != null - ? contact.getFullName().toUpperCase(Locale.getDefault()) - : ""; + String fullName = getFullName() != null ? getFullName() : ""; + String contactFullName = contact.getFullName() != null ? contact.getFullName() : ""; if (fullName.equals(contactFullName)) { if (getAndroidId() != null) { diff --git a/app/src/main/java/org/linphone/views/Digit.java b/app/src/main/java/org/linphone/views/Digit.java index 518dbc25e..c6fdee146 100644 --- a/app/src/main/java/org/linphone/views/Digit.java +++ b/app/src/main/java/org/linphone/views/Digit.java @@ -23,6 +23,7 @@ import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -37,18 +38,17 @@ import org.linphone.settings.LinphonePreferences; @SuppressLint("AppCompatCustomView") public class Digit extends Button implements AddressAware { - - private AddressText mAddress; private boolean mPlayDtmf; + private AddressText mAddress; public Digit(Context context, AttributeSet attrs, int style) { super(context, attrs, style); - setLongClickable(true); + init(context, attrs); } public Digit(Context context, AttributeSet attrs) { super(context, attrs); - setLongClickable(true); + init(context, attrs); } public Digit(Context context) { @@ -56,12 +56,12 @@ public class Digit extends Button implements AddressAware { setLongClickable(true); } - public void setAddressWidget(AddressText address) { - mAddress = address; - } + private void init(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Numpad); + mPlayDtmf = 1 == a.getInt(R.styleable.Numpad_play_dtmf, 1); + a.recycle(); - public void setPlayDtmf(boolean play) { - mPlayDtmf = play; + setLongClickable(true); } @Override @@ -85,6 +85,11 @@ public class Digit extends Button implements AddressAware { } } + @Override + public void setAddressWidget(AddressText address) { + mAddress = address; + } + private class DialKeyListener implements OnClickListener, OnTouchListener, OnLongClickListener { final char mKeyCode; boolean mIsDtmfStarted; diff --git a/app/src/main/java/org/linphone/views/Numpad.java b/app/src/main/java/org/linphone/views/Numpad.java deleted file mode 100644 index 5e3de2314..000000000 --- a/app/src/main/java/org/linphone/views/Numpad.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.linphone.views; - -/* -NumpadView.java -Copyright (C) 2017 Belledonne Communications, Grenoble, France - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import java.util.ArrayList; -import java.util.Collection; -import org.linphone.R; - -public class Numpad extends LinearLayout implements AddressAware { - private final boolean mPlayDtmf; - - public Numpad(Context context, AttributeSet attrs) { - super(context, attrs); - - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Numpad); - mPlayDtmf = 1 == a.getInt(R.styleable.Numpad_play_dtmf, 1); - a.recycle(); - LayoutInflater.from(context).inflate(R.layout.numpad, this); - setLongClickable(true); - } - - @Override - protected final void onFinishInflate() { - for (Digit v : retrieveChildren(this, Digit.class)) { - v.setPlayDtmf(mPlayDtmf); - } - super.onFinishInflate(); - } - - public void setAddressWidget(AddressText address) { - for (AddressAware v : retrieveChildren(this, AddressAware.class)) { - v.setAddressWidget(address); - } - } - - private Collection retrieveChildren(ViewGroup viewGroup, Class clazz) { - final Collection views = new ArrayList<>(); - - for (int i = 0; i < viewGroup.getChildCount(); i++) { - View v = viewGroup.getChildAt(i); - if (v instanceof ViewGroup) { - views.addAll(retrieveChildren((ViewGroup) v, clazz)); - } else { - if (clazz.isInstance(v)) views.add(clazz.cast(v)); - } - } - - return views; - } -} diff --git a/app/src/main/res/layout-land/call.xml b/app/src/main/res/layout-land/call.xml index 6687ed344..95e12a198 100644 --- a/app/src/main/res/layout-land/call.xml +++ b/app/src/main/res/layout-land/call.xml @@ -130,7 +130,7 @@ - + android:background="@color/toolbar_color" /> diff --git a/app/src/main/res/layout-land/dialer.xml b/app/src/main/res/layout-land/dialer.xml index 3affae026..2fa346af1 100644 --- a/app/src/main/res/layout-land/dialer.xml +++ b/app/src/main/res/layout-land/dialer.xml @@ -3,16 +3,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - + android:background="@color/toolbar_color" /> diff --git a/app/src/main/res/layout/call_incoming.xml b/app/src/main/res/layout/call_incoming.xml index 4d8f59187..4d24dc6f7 100644 --- a/app/src/main/res/layout/call_incoming.xml +++ b/app/src/main/res/layout/call_incoming.xml @@ -33,8 +33,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/menu" - android:layout_below="@id/top_bar" - android:background="?attr/backgroundColor"> + android:layout_below="@id/top_bar"> - - - + android:layout_height="match_parent" + android:background="?attr/backgroundColor"> + + + + diff --git a/app/src/main/res/values/digit_style.xml b/app/src/main/res/values/digit_style.xml index 1c75ebda4..42ffda2b0 100644 --- a/app/src/main/res/values/digit_style.xml +++ b/app/src/main/res/values/digit_style.xml @@ -1,6 +1,5 @@ -