From 6b011f4304a8b96c49ccc169448a90ea60267993 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 18 Apr 2017 13:57:13 +0200 Subject: [PATCH 01/45] Update submodule for beta --- submodules/bzrtp | 2 +- submodules/linphone | 2 +- submodules/mediastreamer2 | 2 +- submodules/oRTP | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/submodules/bzrtp b/submodules/bzrtp index 1d092f58e..556335fee 160000 --- a/submodules/bzrtp +++ b/submodules/bzrtp @@ -1 +1 @@ -Subproject commit 1d092f58ec8e04c617e2288577cbedfab7bf9e6a +Subproject commit 556335fee2bbb28e6cbe40510499ef15abef85fb diff --git a/submodules/linphone b/submodules/linphone index 145b15c27..0a2bcd457 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 145b15c2712c787f3d0129b7d643a4df5d1e6a2e +Subproject commit 0a2bcd457b226530c35b784dfda25b9ac81de249 diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2 index 873368043..43539d210 160000 --- a/submodules/mediastreamer2 +++ b/submodules/mediastreamer2 @@ -1 +1 @@ -Subproject commit 873368043760c13958404ee40e7be4fd1cce056a +Subproject commit 43539d210063c7a6be360758090f4890c10973d9 diff --git a/submodules/oRTP b/submodules/oRTP index 8e6ab4f17..67c0672e2 160000 --- a/submodules/oRTP +++ b/submodules/oRTP @@ -1 +1 @@ -Subproject commit 8e6ab4f17f8d1d6870859ba9c64157693d6537a1 +Subproject commit 67c0672e2680baa85a74d8966b813fac259649df From fde919a85152e78c24627ecbd329ff5253be3b21 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 18 Apr 2017 14:07:57 +0200 Subject: [PATCH 02/45] Update manifest version --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c4535943a..7b4ccdb8a 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,7 +2,7 @@ Date: Thu, 20 Apr 2017 17:07:34 +0200 Subject: [PATCH 03/45] Fix bug with progress bar on contacts list --- src/android/org/linphone/ContactsListFragment.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/android/org/linphone/ContactsListFragment.java b/src/android/org/linphone/ContactsListFragment.java index b92441214..dbab611d7 100644 --- a/src/android/org/linphone/ContactsListFragment.java +++ b/src/android/org/linphone/ContactsListFragment.java @@ -349,7 +349,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O } contactsList.setFastScrollEnabled(true); adapter.notifyDataSetInvalidated(); - + if (adapter.getCount() > 0) { contactsFetchInProgress.setVisibility(View.GONE); @@ -393,6 +393,10 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O sipAddressToAdd = null; } + if (searchField != null && searchField.getText().toString().length() > 0) { + if (contactsFetchInProgress != null) contactsFetchInProgress.setVisibility(View.GONE); + } + if (LinphoneActivity.isInstanciated()) { LinphoneActivity.instance().selectMenu(FragmentsAvailable.CONTACTS_LIST); LinphoneActivity.instance().hideTabBar(false); @@ -463,7 +467,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O ContactsListAdapter(List contactsList) { updateDataSet(contactsList); } - + public void updateDataSet(List contactsList) { contacts = contactsList; @@ -484,7 +488,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O sectionsList = new ArrayList(map.keySet()); sections = new String[sectionsList.size()]; sectionsList.toArray(sections); - + notifyDataSetChanged(); } From 12d7c1e6526cee01b8e0a436d2cdb1688dccf486 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Thu, 20 Apr 2017 17:15:46 +0200 Subject: [PATCH 04/45] Fix carriage return replace in chat --- src/android/org/linphone/ChatFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/android/org/linphone/ChatFragment.java b/src/android/org/linphone/ChatFragment.java index fc7547be2..ae5d912b8 100644 --- a/src/android/org/linphone/ChatFragment.java +++ b/src/android/org/linphone/ChatFragment.java @@ -1424,6 +1424,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (text.contains(">")) { text = text.replace(">", ">"); } + if (text.contains("\n")) { + text = text.replace("\n", "
"); + } if (text.contains("http://")) { int indexHttp = text.indexOf("http://"); int indexFinHttp = text.indexOf(" ", indexHttp) == -1 ? text.length() : text.indexOf(" ", indexHttp); From 08aa6ecc8a5c0cc7917a30e16e42dd7fec0bb007 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 18 Apr 2017 17:21:56 +0200 Subject: [PATCH 05/45] Add dynamic loading of config file for proxy config --- res/raw/assistant_create.rc | 33 +++++ src/android/org/linphone/LinphoneManager.java | 7 + .../linphone/assistant/AssistantActivity.java | 136 +++++++++--------- .../CreateAccountActivationFragment.java | 2 +- .../CreateAccountCodeActivationFragment.java | 4 +- .../assistant/LinphoneLoginFragment.java | 4 +- 6 files changed, 112 insertions(+), 74 deletions(-) create mode 100644 res/raw/assistant_create.rc diff --git a/res/raw/assistant_create.rc b/res/raw/assistant_create.rc new file mode 100644 index 000000000..c4cf45d46 --- /dev/null +++ b/res/raw/assistant_create.rc @@ -0,0 +1,33 @@ + + + +
+ 1 + 0 + 0 + sip:voip-metrics@sip.linphone.org;transport=tls + 1 + 180 + 31536000 + sip:?@sip.linphone.org + <sip:sip.linphone.org;transport=tls> + 1 + push_notification + sip.linphone.org +
+ +
+ sips:rls@sip.linphone.org +
+ +
+ sip.linphone.org + -1 + 1 + -1 + 64 + 1 + ^[a-z0-9+_.\-]*$ + https://sip3.linphone.org:444/wizard.php +
+
diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index aff1766ac..1a6bf8384 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -185,6 +185,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mLinphoneFactoryConfigFile = basePath + "/linphonerc"; mLinphoneConfigFile = basePath + "/.linphonerc"; mLinphoneRootCaFile = basePath + "/rootca.pem"; + mDynamicConfigFile = basePath + "/assistant_create.rc"; mRingSoundFile = basePath + "/ringtone.mkv"; mRingbackSoundFile = basePath + "/ringback.wav"; mPauseSoundFile = basePath + "/hold.mkv"; @@ -217,6 +218,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag private final String mLPConfigXsd; private final String mLinphoneFactoryConfigFile; private final String mLinphoneRootCaFile; + private final String mDynamicConfigFile; public final String mLinphoneConfigFile; private final String mRingSoundFile; private final String mRingbackSoundFile; @@ -873,6 +875,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag copyFromPackage(R.raw.linphonerc_factory, new File(mLinphoneFactoryConfigFile).getName()); copyIfNotExist(R.raw.lpconfig, mLPConfigXsd); copyFromPackage(R.raw.rootca, new File(mLinphoneRootCaFile).getName()); + copyFromPackage(R.raw.assistant_create, new File(mDynamicConfigFile).getName()); } public void copyIfNotExist(int ressourceId, String target) throws IOException { @@ -1719,6 +1722,10 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mLc.setDnsServers(servers); } + public String getmDynamicConfigFile() { + return mDynamicConfigFile; + } + @SuppressWarnings("serial") public static class LinphoneConfigException extends LinphoneException { diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 68bfec526..931fa45ef 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -35,6 +35,7 @@ import org.linphone.core.DialPlan; import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneAddress.TransportType; +import org.linphone.core.LinphoneAuthInfo; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCoreException; @@ -104,7 +105,6 @@ private static AssistantActivity instance; public DialPlan country; public String phone_number; public String email; - public String activation_code; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -345,31 +345,63 @@ private static AssistantActivity instance; } } - private void logIn(String username, String password, String ha1, String prefix, String domain, TransportType transport, boolean sendEcCalibrationResult) { + private void logIn(String username, String password, String ha1, String prefix, String domain, TransportType transport) { saveCreatedAccount(username, password, ha1, prefix, domain, transport); } - public void checkAccount(String username, String password, String prefix, String domain) { - saveCreatedAccount(username, password, null, prefix, domain, null); + public void configureLinphoneProxyConfig(LinphoneAccountCreator accountCreator) { + LinphoneCore lc = LinphoneManager.getLc(); + LinphoneProxyConfig proxyConfig = lc.createProxyConfig(); + LinphoneAddress addr; + LinphoneAuthInfo authInfo; + + try { + String identity = proxyConfig.getIdentity(); + identity = identity.replace("?", accountCreator.getUsername()); + addr = LinphoneCoreFactory.instance().createLinphoneAddress(identity); + + addr.setDisplayName(accountCreator.getUsername()); + address = addr; + proxyConfig.edit(); + + + proxyConfig.setIdentity(addr.asString()); + + proxyConfig.done(); + + authInfo = LinphoneCoreFactory.instance().createAuthInfo( + accountCreator.getUsername(), + null, + accountCreator.getPassword(), + accountCreator.getHa1(), + proxyConfig.getRealm(), + proxyConfig.getDomain()); + + + lc.addProxyConfig(proxyConfig); + + lc.addAuthInfo(authInfo); + + lc.setDefaultProxyConfig(proxyConfig); + if (!newAccount) { + displayRegistrationInProgressDialog(); + } + accountCreated = true; + } catch (LinphoneCoreException e) { + Log.e("Canno't configure proxy config ", e); + } } - public void linphoneLogIn(String username, String password, String ha1, String prefix, boolean validate) { - if (validate) { - checkAccount(username, password, prefix, getString(R.string.default_domain)); - } else { - if(accountCreated) { - retryLogin(username, password, prefix, getString(R.string.default_domain), null); - } else { - logIn(username, password, ha1, prefix, getString(R.string.default_domain), null, true); - } - } + public void linphoneLogIn(LinphoneAccountCreator accountCreator) { + LinphoneManager.getLc().getConfig().loadXmlFile(LinphoneManager.getInstance().getmDynamicConfigFile()); + configureLinphoneProxyConfig(accountCreator); } public void genericLogIn(String username, String password, String prefix, String domain, TransportType transport) { if (accountCreated) { retryLogin(username, password, prefix, domain, transport); } else { - logIn(username, password, null, prefix, domain, transport, false); + logIn(username, password, null, prefix, domain, transport); } } @@ -483,56 +515,24 @@ private static AssistantActivity instance; Log.e(e); } - boolean isMainAccountLinphoneDotOrg = domain.equals(getString(R.string.default_domain)); AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc()) - .setUsername(username) - .setDomain(domain) - .setHa1(ha1) - .setPassword(password); + .setUsername(username) + .setDomain(domain) + .setHa1(ha1) + .setPassword(password); - if(prefix != null){ + if (prefix != null) { builder.setPrefix(prefix); } - if (isMainAccountLinphoneDotOrg) { - if (getResources().getBoolean(R.bool.disable_all_security_features_for_markets)) { - builder.setProxy(domain) - .setTransport(TransportType.LinphoneTransportTcp); - } - else { - builder.setProxy(domain) - .setTransport(TransportType.LinphoneTransportTls); - } - - builder.setExpires("604800") - .setAvpfEnabled(true) - .setAvpfRRInterval(3) - .setQualityReportingCollector("sip:voip-metrics@sip.linphone.org") - .setQualityReportingEnabled(true) - .setQualityReportingInterval(180) - .setRealm("sip.linphone.org") - .setNoDefault(false); - - mPrefs.enabledFriendlistSubscription(getResources().getBoolean(R.bool.use_friendlist_subscription)); - LinphoneManager.getInstance().subscribeFriendList(getResources().getBoolean(R.bool.use_friendlist_subscription)); - - mPrefs.setStunServer(getString(R.string.default_stun)); - mPrefs.setIceEnabled(true); - - accountCreator.setPassword(password); - accountCreator.setHa1(ha1); - accountCreator.setUsername(username); - } else { - String forcedProxy = ""; - if (!TextUtils.isEmpty(forcedProxy)) { - builder.setProxy(forcedProxy) - .setOutboundProxyEnabled(true) - .setAvpfRRInterval(5); - } - - if(transport != null) { - builder.setTransport(transport); - } + String forcedProxy = ""; + if (!TextUtils.isEmpty(forcedProxy)) { + builder.setProxy(forcedProxy) + .setOutboundProxyEnabled(true) + .setAvpfRRInterval(5); + } + if (transport != null) { + builder.setTransport(transport); } if (getResources().getBoolean(R.bool.enable_push_id)) { @@ -542,16 +542,16 @@ private static AssistantActivity instance; String contactInfos = "app-id=" + appId + ";pn-type=google;pn-tok=" + regId; builder.setContactParameters(contactInfos); } - } - try { - builder.saveNewAccount(); - if(!newAccount) { - displayRegistrationInProgressDialog(); + try { + builder.saveNewAccount(); + if (!newAccount) { + displayRegistrationInProgressDialog(); + } + accountCreated = true; + } catch (LinphoneCoreException e) { + Log.e(e); } - accountCreated = true; - } catch (LinphoneCoreException e) { - Log.e(e); } } diff --git a/src/android/org/linphone/assistant/CreateAccountActivationFragment.java b/src/android/org/linphone/assistant/CreateAccountActivationFragment.java index 5072fbacd..21d286303 100644 --- a/src/android/org/linphone/assistant/CreateAccountActivationFragment.java +++ b/src/android/org/linphone/assistant/CreateAccountActivationFragment.java @@ -102,7 +102,7 @@ public class CreateAccountActivationFragment extends Fragment implements OnClick if (status.equals(LinphoneAccountCreator.RequestStatus.AccountNotActivated)) { Toast.makeText(getActivity(), getString(R.string.assistant_account_not_validated), Toast.LENGTH_LONG).show(); } else if (status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)) { - AssistantActivity.instance().saveCreatedAccount(username, password, null, null, getString(R.string.default_domain), null); + AssistantActivity.instance().linphoneLogIn(accountCreator); AssistantActivity.instance().isAccountVerified(username); } else { Toast.makeText(getActivity(), getString(R.string.wizard_server_unavailable), Toast.LENGTH_LONG).show(); diff --git a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java index 03a646022..586f35991 100644 --- a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java +++ b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java @@ -146,14 +146,14 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin if (status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)) { checkAccount.setEnabled(true); if (accountCreator.getUsername() != null) { - AssistantActivity.instance().saveCreatedAccount(accountCreator.getUsername(), null , accountCreator.getHa1(), dialcode, getString(R.string.default_domain), null); + AssistantActivity.instance().linphoneLogIn(accountCreator); if(!recoverAccount){ AssistantActivity.instance().isAccountVerified(accountCreator.getUsername()); } else { AssistantActivity.instance().success(); } } else { - AssistantActivity.instance().saveCreatedAccount(accountCreator.getPhoneNumber(), null, accountCreator.getHa1(), dialcode, getString(R.string.default_domain), null); + AssistantActivity.instance().linphoneLogIn(accountCreator); if(!recoverAccount) { AssistantActivity.instance().isAccountVerified(accountCreator.getPhoneNumber()); } else { diff --git a/src/android/org/linphone/assistant/LinphoneLoginFragment.java b/src/android/org/linphone/assistant/LinphoneLoginFragment.java index 563ccb0ea..1a1a03691 100644 --- a/src/android/org/linphone/assistant/LinphoneLoginFragment.java +++ b/src/android/org/linphone/assistant/LinphoneLoginFragment.java @@ -328,10 +328,8 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On } if (status.equals(LinphoneAccountCreator.RequestStatus.AccountExist) || status.equals(LinphoneAccountCreator.RequestStatus.AccountExistWithAlias)) { String phone = accountCreator.getPhoneNumber(); - String dial = null; if (phone != null && phone.length() > 0) - dial = accountCreator.getPrefix(phone); - AssistantActivity.instance().linphoneLogIn(login.getText().toString(), password.getText().toString(), null, dial, getResources().getBoolean(R.bool.assistant_account_validation_mandatory)); + AssistantActivity.instance().linphoneLogIn(accountCreator); } else { LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status), AssistantActivity.instance()); } From a77d5a23bd55891547dad2033cd85ebd4d1aafa5 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 21 Apr 2017 11:30:46 +0200 Subject: [PATCH 06/45] Fix linphone login --- src/android/org/linphone/assistant/AssistantActivity.java | 2 +- src/android/org/linphone/assistant/LinphoneLoginFragment.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 931fa45ef..c7fdc479d 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -388,7 +388,7 @@ private static AssistantActivity instance; } accountCreated = true; } catch (LinphoneCoreException e) { - Log.e("Canno't configure proxy config ", e); + Log.e("Can't configure proxy config ", e); } } diff --git a/src/android/org/linphone/assistant/LinphoneLoginFragment.java b/src/android/org/linphone/assistant/LinphoneLoginFragment.java index 1a1a03691..5e9a3e0b1 100644 --- a/src/android/org/linphone/assistant/LinphoneLoginFragment.java +++ b/src/android/org/linphone/assistant/LinphoneLoginFragment.java @@ -327,8 +327,6 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On return; } if (status.equals(LinphoneAccountCreator.RequestStatus.AccountExist) || status.equals(LinphoneAccountCreator.RequestStatus.AccountExistWithAlias)) { - String phone = accountCreator.getPhoneNumber(); - if (phone != null && phone.length() > 0) AssistantActivity.instance().linphoneLogIn(accountCreator); } else { LinphoneUtils.displayErrorAlert(LinphoneUtils.errorForRequestStatus(status), AssistantActivity.instance()); From 52ac293687ba0d6bcb44c752359a09bed2710d0c Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 21 Apr 2017 11:43:59 +0200 Subject: [PATCH 07/45] Update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 0a2bcd457..61eaab836 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 0a2bcd457b226530c35b784dfda25b9ac81de249 +Subproject commit 61eaab836df5d3df32d036003aeeb8edc848f154 From 4c66361d77dd0315d7039728c42bbd3073cc1132 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 21 Apr 2017 11:45:27 +0200 Subject: [PATCH 08/45] Update AndroidManifest --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7b4ccdb8a..5a9296b30 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,7 +2,7 @@ - \ No newline at end of file +
From b448dabaeda4daf269aa2f8692c8751b22c75bda Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 24 Apr 2017 10:16:30 +0200 Subject: [PATCH 09/45] Fix updating contact informations close #44 --- src/android/org/linphone/ContactDetailsFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/android/org/linphone/ContactDetailsFragment.java b/src/android/org/linphone/ContactDetailsFragment.java index 50a412cdb..45f415ab6 100644 --- a/src/android/org/linphone/ContactDetailsFragment.java +++ b/src/android/org/linphone/ContactDetailsFragment.java @@ -112,6 +112,7 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener TextView contactName = (TextView) view.findViewById(R.id.contact_name); contactName.setText(contact.getFullName()); + organization.setText((contact.getOrganization() != null) ? contact.getOrganization() : ""); TableLayout controls = (TableLayout) view.findViewById(R.id.controls); controls.removeAllViews(); From 9f82804836a1abd67f0ffdedcbb6a8bc9b24b8e2 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 21 Apr 2017 13:02:09 +0200 Subject: [PATCH 10/45] Fix layout for contact_edit_row --- res/layout/contact_edit_row.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/layout/contact_edit_row.xml b/res/layout/contact_edit_row.xml index 0fcd30a54..27a1334ee 100644 --- a/res/layout/contact_edit_row.xml +++ b/res/layout/contact_edit_row.xml @@ -14,8 +14,8 @@ style="@style/font6" android:textCursorDrawable="@null" android:inputType="textEmailAddress" - android:layout_toLeftOf="@+id/delete" - android:layout_toStartOf="@+id/delete"/> + android:layout_toLeftOf="@+id/delete_field" + android:layout_toStartOf="@+id/delete_field"/> Date: Fri, 21 Apr 2017 15:29:14 +0200 Subject: [PATCH 11/45] [HookReceiver] updates & clean up --- src/android/org/linphone/HookReceiver.java | 3 ++- src/android/org/linphone/LinphoneManager.java | 8 ++++++++ src/android/org/linphone/SettingsFragment.java | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/android/org/linphone/HookReceiver.java b/src/android/org/linphone/HookReceiver.java index b62967e53..a5068ffbe 100644 --- a/src/android/org/linphone/HookReceiver.java +++ b/src/android/org/linphone/HookReceiver.java @@ -18,7 +18,8 @@ public class HookReceiver extends BroadcastReceiver { //handset on Log.i(" ======>>>>>> HookReceiver - handset ON"); LinphoneManager.getLc().enableSpeaker(false); - LinphoneManager.getInstance().setHandsetMode(true); + if(!LinphoneManager.getInstance().isHansetModeOn()) + LinphoneManager.getInstance().setHandsetMode(true); }else{ diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 1a6bf8384..1d72f70be 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -163,6 +163,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag private SensorManager mSensorManager; private Sensor mProximity; private boolean mProximitySensingEnabled; + private boolean handsetON = false; public String wizardLoginViewDomain = null; @@ -854,18 +855,25 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag protected void setHandsetMode(Boolean on){ if(mLc.isInComingInvitePending() && on){ + handsetON = true; try { mLc.acceptCall(mLc.getCurrentCall()); LinphoneActivity.instance().startIncallActivity(mLc.getCurrentCall()); }catch(LinphoneCoreException e){} }else if(on && CallActivity.isInstanciated()){ + handsetON = true; CallActivity.instance().setSpeakerEnabled(true); CallActivity.instance().refreshInCallActions(); }else if (!on){ + handsetON = false; LinphoneManager.getInstance().terminateCall(); } } + protected boolean isHansetModeOn(){ + return handsetON; + } + private void copyAssetsFromPackage() throws IOException { copyIfNotExist(R.raw.notes_of_the_optimistic, mRingSoundFile); copyIfNotExist(R.raw.ringback, mRingbackSoundFile); diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java index 6f64675c4..e5d2b873a 100644 --- a/src/android/org/linphone/SettingsFragment.java +++ b/src/android/org/linphone/SettingsFragment.java @@ -409,7 +409,7 @@ public class SettingsFragment extends PreferencesListFragment { if (value.toString().equals(getString(R.string.media_encryption_srtp))) key = getString(R.string.pref_media_encryption_key_srtp); else if (value.toString().equals(getString(R.string.media_encryption_zrtp))) - key = getString(R.string.pref_media_encryption_key_zrtp); + key = getString(R.string.pref_media_encryption_key_0zrtp); else if (value.toString().equals(getString(R.string.media_encryption_dtls))) key = getString(R.string.pref_media_encryption_key_dtls); pref.setValue(key); From bf987e1e67787d2f9f13fda882f0127f1a183753 Mon Sep 17 00:00:00 2001 From: Brieuc Viel Date: Fri, 21 Apr 2017 15:51:27 +0200 Subject: [PATCH 12/45] [settingsFrag] fix typo --- src/android/org/linphone/SettingsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java index e5d2b873a..6f64675c4 100644 --- a/src/android/org/linphone/SettingsFragment.java +++ b/src/android/org/linphone/SettingsFragment.java @@ -409,7 +409,7 @@ public class SettingsFragment extends PreferencesListFragment { if (value.toString().equals(getString(R.string.media_encryption_srtp))) key = getString(R.string.pref_media_encryption_key_srtp); else if (value.toString().equals(getString(R.string.media_encryption_zrtp))) - key = getString(R.string.pref_media_encryption_key_0zrtp); + key = getString(R.string.pref_media_encryption_key_zrtp); else if (value.toString().equals(getString(R.string.media_encryption_dtls))) key = getString(R.string.pref_media_encryption_key_dtls); pref.setValue(key); From 9f35dd40ad15815e3e7a4ab40d37ffad7308da3b Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 24 Apr 2017 10:52:27 +0200 Subject: [PATCH 13/45] Fix crash when doze mode is disable and we quit linphone --- src/android/org/linphone/LinphoneManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 1d72f70be..b28384374 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -1000,8 +1000,8 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter); } else { Log.i("[Doze Mode]: unregister"); + if (dozeModeEnabled) mServiceContext.unregisterReceiver(mDozeReceiver); dozeModeEnabled = false; - mServiceContext.unregisterReceiver(mDozeReceiver); } } From ec18a61d3b38782fcf45d9e7b693189c93bbb2d5 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 24 Apr 2017 16:31:57 +0200 Subject: [PATCH 14/45] Update submodule linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 61eaab836..42b48990a 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 61eaab836df5d3df32d036003aeeb8edc848f154 +Subproject commit 42b48990a87b1fbadd9347f4b13702c62bb752a9 From b9c768e22589f0cc8766ac8f5a932e4fc16e7116 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 25 Apr 2017 14:28:29 +0200 Subject: [PATCH 15/45] Fix popup of video and zrtp on rotation --- src/android/org/linphone/CallActivity.java | 16 +++++++++++++--- src/android/org/linphone/StatusFragment.java | 13 ++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/android/org/linphone/CallActivity.java b/src/android/org/linphone/CallActivity.java index de4263242..b8362e975 100644 --- a/src/android/org/linphone/CallActivity.java +++ b/src/android/org/linphone/CallActivity.java @@ -108,7 +108,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList private StatusFragment status; private CallAudioFragment audioCallFragment; private CallVideoFragment videoCallFragment; - private boolean isSpeakerEnabled = false, isMicMuted = false, isTransferAllowed; + private boolean isSpeakerEnabled = false, isMicMuted = false, isTransferAllowed, isVideoAsk; private LinearLayout mControlsLayout; private Numpad numpad; private int cameraNumber; @@ -258,6 +258,9 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList TimeRemind = savedInstanceState.getLong("TimeRemind"); createTimerForDialog(TimeRemind); } + if (status != null && savedInstanceState.getBoolean("AskingZrtp")) { + status.setisZrtpAsk(savedInstanceState.getBoolean("AskingZrtp")); + } refreshInCallActions(); return; } else { @@ -313,8 +316,9 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList outState.putBoolean("Speaker", LinphoneManager.getLc().isSpeakerEnabled()); outState.putBoolean("Mic", LinphoneManager.getLc().isMicMuted()); outState.putBoolean("VideoCallPaused", isVideoCallPaused); - outState.putBoolean("AskingVideo", (dialog != null)); + outState.putBoolean("AskingVideo", isVideoAsk); outState.putLong("TimeRemind", TimeRemind); + if (status != null) outState.putBoolean("AskingZrtp", status.getisZrtpAsk()); if (dialog != null) dialog.dismiss(); super.onSaveInstanceState(outState); } @@ -1122,6 +1126,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList delete.setText(R.string.accept); Button cancel = (Button) dialog.findViewById(R.id.cancel); cancel.setText(R.string.decline); + isVideoAsk = true; delete.setOnClickListener(new OnClickListener() { @Override @@ -1134,7 +1139,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList } else { checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); } - + isVideoAsk = false; dialog.dismiss(); dialog = null; } @@ -1146,6 +1151,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList if (CallActivity.isInstanciated()) { CallActivity.instance().acceptCallUpdate(false); } + isVideoAsk = false; dialog.dismiss(); dialog = null; } @@ -1168,6 +1174,10 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList refreshIncallUi(); handleViewIntent(); + if (status != null && status.getisZrtpAsk() && lc != null) { + status.showZRTPDialog(lc.getCurrentCall()); + } + if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) { LinphoneManager.getInstance().enableProximitySensing(true); removeCallbacks(); diff --git a/src/android/org/linphone/StatusFragment.java b/src/android/org/linphone/StatusFragment.java index 079597167..146d2cff2 100644 --- a/src/android/org/linphone/StatusFragment.java +++ b/src/android/org/linphone/StatusFragment.java @@ -56,7 +56,7 @@ public class StatusFragment extends Fragment { private TextView statusText, voicemailCount; private ImageView statusLed, callQuality, encryption, menu, voicemail; private Runnable mCallQualityUpdater; - private boolean isInCall, isAttached = false; + private boolean isInCall, isAttached = false, isZrtpAsk; private LinphoneCoreListenerBase mListener; private Dialog ZRTPdialog = null; private int mDisplayedQuality = -1; @@ -395,6 +395,7 @@ public class StatusFragment extends Fragment { ZRTPdialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); ZRTPdialog.getWindow().setBackgroundDrawable(d); String zrtpToRead, zrtpToListen; + isZrtpAsk = true; if (call.getDirection().equals(CallDirection.Incoming)) { zrtpToRead = call.getAuthenticationToken().substring(0,2); @@ -420,6 +421,7 @@ public class StatusFragment extends Fragment { if (encryption != null) { encryption.setImageResource(R.drawable.security_ok); } + isZrtpAsk = false; ZRTPdialog.dismiss(); } }); @@ -433,10 +435,19 @@ public class StatusFragment extends Fragment { encryption.setImageResource(R.drawable.security_ko); } } + isZrtpAsk = false; ZRTPdialog.dismiss(); } }); ZRTPdialog.show(); } } + + public boolean getisZrtpAsk() { + return isZrtpAsk; + } + + public void setisZrtpAsk(boolean bool) { + isZrtpAsk = bool; + } } From a2bc0d48ae9aa7313834d524e4f0846872d4bcef Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 25 Apr 2017 15:04:23 +0200 Subject: [PATCH 16/45] Fix probable ui freeze on outgoingcall --- src/android/org/linphone/CallOutgoingActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/android/org/linphone/CallOutgoingActivity.java b/src/android/org/linphone/CallOutgoingActivity.java index 072493efb..f72e9d5f2 100644 --- a/src/android/org/linphone/CallOutgoingActivity.java +++ b/src/android/org/linphone/CallOutgoingActivity.java @@ -135,6 +135,8 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC lc.addListener(mListener); } + mCall = null; + // Only one call ringing at a time is allowed if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) { List calls = LinphoneUtils.getLinphoneCalls(LinphoneManager.getLc()); From 88d4d102df9de15129ed64f6cd49982f397126d6 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 26 Apr 2017 11:40:07 +0200 Subject: [PATCH 17/45] Fix restart after downloading OpenH264 --- src/android/org/linphone/assistant/AssistantActivity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index c7fdc479d..c434ccae9 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -48,6 +48,7 @@ import org.linphone.tools.OpenH264DownloadHelper; import android.Manifest; import android.app.Activity; +import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlertDialog; import android.app.Dialog; @@ -688,7 +689,10 @@ private static AssistantActivity instance; AlarmManager mgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 500, mPendingIntent); + finish(); stopService(new Intent(Intent.ACTION_MAIN).setClass(this, LinphoneService.class)); + ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); + am.killBackgroundProcesses(getString(R.string.sync_account_type)); android.os.Process.killProcess(android.os.Process.myPid()); } From b2f9431053a0c2cbcf49bf0cbc2f4c2ce2a40d28 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 26 Apr 2017 11:53:04 +0200 Subject: [PATCH 18/45] Update submodules --- submodules/msopenh264 | 2 +- submodules/mssilk | 2 +- submodules/mswebrtc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/submodules/msopenh264 b/submodules/msopenh264 index 1db2bda9e..9575e5dba 160000 --- a/submodules/msopenh264 +++ b/submodules/msopenh264 @@ -1 +1 @@ -Subproject commit 1db2bda9e8d264ea0e3f98a26f62817ea5ef5007 +Subproject commit 9575e5dba4ac612e82f7a511dd5718c7e45590df diff --git a/submodules/mssilk b/submodules/mssilk index 48a8d1f5d..d8051a67d 160000 --- a/submodules/mssilk +++ b/submodules/mssilk @@ -1 +1 @@ -Subproject commit 48a8d1f5df85e4a784633584fda49a3202491a9a +Subproject commit d8051a67d7012a102bbdf1b5966c2a615d274186 diff --git a/submodules/mswebrtc b/submodules/mswebrtc index 475eb67b5..b68f32914 160000 --- a/submodules/mswebrtc +++ b/submodules/mswebrtc @@ -1 +1 @@ -Subproject commit 475eb67b5cb8d82f6636e69c3bde8b18daeb824e +Subproject commit b68f32914b79b49f1a9b370b0c70946fdc94d5f5 From d9e46030331b3cbda4d42a81e3b99d66e8410867 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 26 Apr 2017 17:22:56 +0200 Subject: [PATCH 19/45] Remove old PrresenceActivityType --- src/android/org/linphone/LinphoneManager.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index b28384374..4dba87a7e 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -448,6 +448,34 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag public void changeStatusToOnline() { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); + if (isInstanciated() && lc != null && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.TV) { + lc.getPresenceModel().getActivity().setType(PresenceActivityType.TV); + } else if (isInstanciated() && lc != null && !isPresenceModelActivitySet()) { + PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.TV, null); + lc.setPresenceModel(model); + } + } + + public void changeStatusToOnThePhone() { + LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); + if (isInstanciated() && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.OnThePhone) { + lc.getPresenceModel().getActivity().setType(PresenceActivityType.OnThePhone); + } else if (isInstanciated() && !isPresenceModelActivitySet()) { + PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.OnThePhone, null); + lc.setPresenceModel(model); + } + } + + public void changeStatusToOffline() { + LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); + if (isInstanciated() && lc != null) { + lc.getPresenceModel().setBasicStatus(PresenceBasicStatus.Closed); + } + } + + public void changeStatusToOnline() { + + LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); if (isInstanciated() && lc != null && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.Online) { lc.getPresenceModel().getActivity().setType(PresenceActivityType.Online); } else if (isInstanciated() && lc != null && !isPresenceModelActivitySet()) { From 3b6ac00ed946cd3c23734535b82eb52ad6c8964c Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 26 Apr 2017 17:28:11 +0200 Subject: [PATCH 20/45] Fix last commit --- src/android/org/linphone/LinphoneManager.java | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 4dba87a7e..66134f6e5 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -82,6 +82,7 @@ import org.linphone.core.LinphoneInfoMessage; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.OpenH264DownloadHelperListener; import org.linphone.core.PayloadType; +import org.linphone.core.PresenceBasicStatus; import org.linphone.core.PresenceActivityType; import org.linphone.core.PresenceModel; import org.linphone.core.PublishState; @@ -473,37 +474,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag } } - public void changeStatusToOnline() { - - LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); - if (isInstanciated() && lc != null && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.Online) { - lc.getPresenceModel().getActivity().setType(PresenceActivityType.Online); - } else if (isInstanciated() && lc != null && !isPresenceModelActivitySet()) { - PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.Online, null); - lc.setPresenceModel(model); - } - } - - public void changeStatusToOnThePhone() { - LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); - if (isInstanciated() && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.OnThePhone) { - lc.getPresenceModel().getActivity().setType(PresenceActivityType.OnThePhone); - } else if (isInstanciated() && !isPresenceModelActivitySet()) { - PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.OnThePhone, null); - lc.setPresenceModel(model); - } - } - - public void changeStatusToOffline() { - LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); - if (isInstanciated() && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.Offline) { - lc.getPresenceModel().getActivity().setType(PresenceActivityType.Offline); - } else if (isInstanciated() && !isPresenceModelActivitySet()) { - PresenceModel model = LinphoneCoreFactory.instance().createPresenceModel(PresenceActivityType.Offline, null); - lc.setPresenceModel(model); - } - } - public void subscribeFriendList(boolean enabled){ LinphoneCore lc = getLcIfManagerNotDestroyedOrNull(); if(lc != null && lc.getFriendList() != null && lc.getFriendList().length > 0) { From 399d219d51316317d5169197acc0fa987573525c Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 26 Apr 2017 17:29:49 +0200 Subject: [PATCH 21/45] Update submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 42b48990a..29a25d029 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 42b48990a87b1fbadd9347f4b13702c62bb752a9 +Subproject commit 29a25d0298e9db5338010182daac135b0afaf1de From 4eaf8b7025873fd2d58bce7dcf68c25de4cbc9cf Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Thu, 27 Apr 2017 12:18:24 +0200 Subject: [PATCH 22/45] Fix ui in Chat fragments for tablet --- src/android/org/linphone/ChatFragment.java | 19 +++++++++++++++++++ .../org/linphone/ChatListFragment.java | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/src/android/org/linphone/ChatFragment.java b/src/android/org/linphone/ChatFragment.java index ae5d912b8..7287faa8b 100644 --- a/src/android/org/linphone/ChatFragment.java +++ b/src/android/org/linphone/ChatFragment.java @@ -74,6 +74,7 @@ import android.widget.TextView; import android.widget.Toast; import org.linphone.compatibility.Compatibility; +import org.linphone.core.LinphoneAccountCreator; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneBuffer; import org.linphone.core.LinphoneChatMessage; @@ -441,6 +442,13 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC LinphoneChatMessage message = getMessageForId(item.getGroupId()); if (message != null) { chatRoom.deleteMessage(message); + if (getResources().getBoolean(R.bool.isTablet) && chatRoom.getHistorySize() <= 0) { + if (LinphoneActivity.isInstanciated()) { + LinphoneActivity.instance().displayChat("", null); + LinphoneActivity.instance().onMessageSent("", null); + initNewChatConversation(); + } + } invalidate(); } } @@ -573,6 +581,13 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC chatRoom.deleteMessage(message); } } + if (getResources().getBoolean(R.bool.isTablet) && chatRoom.getHistorySize() <= 0) { + if (LinphoneActivity.isInstanciated()) { + LinphoneActivity.instance().displayChat("", null); + LinphoneActivity.instance().onMessageSent("", null); + initNewChatConversation(); + } + } invalidate(); } @@ -654,6 +669,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC && chatRoom != null && chatRoom.islimeAvailable())){ sendTextMessage(message.getText().toString()); message.setText(""); + invalidate(); return; } @@ -961,6 +977,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC } private void initNewChatConversation(){ + newChatConversation = true; + chatRoom = null; messagesList.setVisibility(View.GONE); edit.setVisibility(View.INVISIBLE); startCall.setVisibility(View.INVISIBLE); @@ -969,6 +987,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC searchAdapter = new SearchContactsListAdapter(null); resultContactsSearch.setAdapter(searchAdapter); searchContactField.setVisibility(View.VISIBLE); + searchContactField.setText(""); searchContactField.requestFocus(); searchContactField.addTextChangedListener(new TextWatcher() { @Override diff --git a/src/android/org/linphone/ChatListFragment.java b/src/android/org/linphone/ChatListFragment.java index 1f238f5ea..9f1797183 100644 --- a/src/android/org/linphone/ChatListFragment.java +++ b/src/android/org/linphone/ChatListFragment.java @@ -130,6 +130,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte } } } + quitEditMode(); LinphoneActivity.instance().updateMissedChatCount(); } @@ -180,6 +181,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte public void refresh() { mConversations = LinphoneActivity.instance().getChatList(); + if (getResources().getBoolean(R.bool.isTablet)) { + LinphoneActivity.instance().displayChat("", null); + } hideAndDisplayMessageIfNoChat(); } @@ -249,6 +253,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte LinphoneActivity.instance().removeFromChatList(sipUri); mConversations = LinphoneActivity.instance().getChatList(); + if (getResources().getBoolean(R.bool.isTablet)) { + quitEditMode(); + } hideAndDisplayMessageIfNoChat(); return true; } From 85f3b9ab93de072f025d9949907366d44c48d17c Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 2 May 2017 10:27:57 +0200 Subject: [PATCH 23/45] Fix Beta --- AndroidManifest.xml | 2 +- jni/Android.mk | 3 +++ jni/Application.mk | 2 ++ submodules/linphone | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 jni/Android.mk create mode 100644 jni/Application.mk diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5a9296b30..47c870b34 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,7 +2,7 @@ Date: Wed, 3 May 2017 15:31:33 +0200 Subject: [PATCH 24/45] Check identity on LinphoneLogin --- src/android/org/linphone/assistant/AssistantActivity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index c434ccae9..f51885f22 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -358,6 +358,10 @@ private static AssistantActivity instance; try { String identity = proxyConfig.getIdentity(); + if (identity == null) { + LinphoneUtils.displayErrorAlert(getString(R.string.error), this); + return; + } identity = identity.replace("?", accountCreator.getUsername()); addr = LinphoneCoreFactory.instance().createLinphoneAddress(identity); From 746fd129811aedcb25f4389a3f0ac02541de9e67 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 10:19:03 +0200 Subject: [PATCH 25/45] Update Submodules --- submodules/cmake-builder | 2 +- submodules/msopenh264 | 2 +- submodules/mssilk | 2 +- submodules/mswebrtc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/submodules/cmake-builder b/submodules/cmake-builder index 58b2c2a87..7b77d1eab 160000 --- a/submodules/cmake-builder +++ b/submodules/cmake-builder @@ -1 +1 @@ -Subproject commit 58b2c2a8771c6720bbdb0bb260ce072432848100 +Subproject commit 7b77d1eab60e2bb88f765d679f8b4f86a1bfbd93 diff --git a/submodules/msopenh264 b/submodules/msopenh264 index 9575e5dba..3a398b400 160000 --- a/submodules/msopenh264 +++ b/submodules/msopenh264 @@ -1 +1 @@ -Subproject commit 9575e5dba4ac612e82f7a511dd5718c7e45590df +Subproject commit 3a398b4000f29c67e010057f718c136ca245a9a8 diff --git a/submodules/mssilk b/submodules/mssilk index d8051a67d..fef0c397c 160000 --- a/submodules/mssilk +++ b/submodules/mssilk @@ -1 +1 @@ -Subproject commit d8051a67d7012a102bbdf1b5966c2a615d274186 +Subproject commit fef0c397c1d2dfc3b8b0951e3db0b9b5cb5d34b9 diff --git a/submodules/mswebrtc b/submodules/mswebrtc index b68f32914..265c3bf1b 160000 --- a/submodules/mswebrtc +++ b/submodules/mswebrtc @@ -1 +1 @@ -Subproject commit b68f32914b79b49f1a9b370b0c70946fdc94d5f5 +Subproject commit 265c3bf1bfae31ed43766afb473782ec7e782898 From 5e0c25ac829c04b8a14a2e9bfd151bf430589287 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 2 May 2017 15:14:04 +0200 Subject: [PATCH 26/45] fix crashes around ErrorInfo java object --- src/android/org/linphone/CallOutgoingActivity.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/android/org/linphone/CallOutgoingActivity.java b/src/android/org/linphone/CallOutgoingActivity.java index f72e9d5f2..2b100df29 100644 --- a/src/android/org/linphone/CallOutgoingActivity.java +++ b/src/android/org/linphone/CallOutgoingActivity.java @@ -104,17 +104,22 @@ public class CallOutgoingActivity extends LinphoneGenericActivity implements OnC return; } else if (state == State.Error) { // Convert LinphoneCore message for internalization - if (message != null && call.getErrorInfo().getReason() == Reason.Declined) { + if (call.getErrorInfo().getReason() == Reason.Declined) { displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT); - } else if (message != null && call.getErrorInfo().getReason() == Reason.NotFound) { + } else if (call.getErrorInfo().getReason() == Reason.NotFound) { displayCustomToast(getString(R.string.error_user_not_found), Toast.LENGTH_SHORT); - } else if (message != null && call.getErrorInfo().getReason() == Reason.Media) { + } else if (call.getErrorInfo().getReason() == Reason.Media) { displayCustomToast(getString(R.string.error_incompatible_media), Toast.LENGTH_SHORT); - } else if (message != null && call.getErrorInfo().getReason() == Reason.Busy) { + } else if (call.getErrorInfo().getReason() == Reason.Busy) { displayCustomToast(getString(R.string.error_user_busy), Toast.LENGTH_SHORT); } else if (message != null) { displayCustomToast(getString(R.string.error_unknown) + " - " + message, Toast.LENGTH_SHORT); } + }else if (state == State.CallEnd) { + // Convert LinphoneCore message for internalization + if (call.getErrorInfo().getReason() == Reason.Declined) { + displayCustomToast(getString(R.string.error_call_declined), Toast.LENGTH_SHORT); + } } if (LinphoneManager.getLc().getCallsNb() == 0) { From 15ef81bda6b812ed797b9d0d5a24464f65820c0c Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 10:35:34 +0200 Subject: [PATCH 27/45] Check proxyconfig on setAccountEnabled --- src/android/org/linphone/LinphonePreferences.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index 0f2f94b06..e3bc5c336 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -742,6 +742,10 @@ public class LinphonePreferences { public void setAccountEnabled(int n, boolean enabled) { LinphoneProxyConfig prxCfg = getProxyConfig(n); + if (prxCfg == null) { + LinphoneUtils.displayErrorAlert(getString(R.string.error), mContext); + return; + } prxCfg.edit(); prxCfg.enableRegister(enabled); prxCfg.done(); From d43d49e17aaf34620d8374410aa259eb09a3a3c9 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 10:36:10 +0200 Subject: [PATCH 28/45] Update Manifest and submodule --- AndroidManifest.xml | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 47c870b34..464e35237 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,7 +2,7 @@ Date: Fri, 5 May 2017 11:34:06 +0200 Subject: [PATCH 29/45] Fix enable subscribe friend list when log with Linphone account --- src/android/org/linphone/assistant/AssistantActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index f51885f22..ccfb62c5e 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -388,6 +388,7 @@ private static AssistantActivity instance; lc.addAuthInfo(authInfo); lc.setDefaultProxyConfig(proxyConfig); + LinphoneManager.getInstance().subscribeFriendList(true); if (!newAccount) { displayRegistrationInProgressDialog(); } From 28bc15fc1aad7182a70478d5212688bdc156bea7 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 15:53:18 +0200 Subject: [PATCH 30/45] Add log for firebase --- src/android/org/linphone/firebase/FirebaseIdService.java | 6 +++--- src/android/org/linphone/firebase/FirebaseMessaging.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/android/org/linphone/firebase/FirebaseIdService.java b/src/android/org/linphone/firebase/FirebaseIdService.java index c55aafd3b..31593b3ff 100644 --- a/src/android/org/linphone/firebase/FirebaseIdService.java +++ b/src/android/org/linphone/firebase/FirebaseIdService.java @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. package org.linphone.firebase; -import android.util.Log; +import org.linphone.mediastream.Log; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceIdService; @@ -35,13 +35,13 @@ public class FirebaseIdService extends FirebaseInstanceIdService { public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); - Log.d("Linphone", "[Push Notification] Refreshed token: " + refreshedToken); + Log.i("[Push Notification] Refreshed token: " + refreshedToken); sendRegistrationToServer(refreshedToken); } private void sendRegistrationToServer(final String refreshedToken) { - Log.d("Linphone", "[Push Notification] Send token to server: " + refreshedToken); + Log.i("[Push Notification] Send token to server: " + refreshedToken); UIThreadDispatcher.dispatch(new Runnable() { @Override public void run() { diff --git a/src/android/org/linphone/firebase/FirebaseMessaging.java b/src/android/org/linphone/firebase/FirebaseMessaging.java index cd033f64d..1717fa05a 100644 --- a/src/android/org/linphone/firebase/FirebaseMessaging.java +++ b/src/android/org/linphone/firebase/FirebaseMessaging.java @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. package org.linphone.firebase; import android.content.Intent; -import android.util.Log; +import org.linphone.mediastream.Log; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; @@ -39,7 +39,7 @@ public class FirebaseMessaging extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { - Log.d("Linphone","[Push Notification] Received"); + Log.i("[Push Notification] Received"); if (!LinphoneService.isReady()) { startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); From 9e31361f0ab122ae1b880e0f39ccdcde52414057 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 15:53:31 +0200 Subject: [PATCH 31/45] Update linphone_rc_default --- res/raw/linphonerc_default | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/res/raw/linphonerc_default b/res/raw/linphonerc_default index c3fbddefa..22821f13f 100644 --- a/res/raw/linphonerc_default +++ b/res/raw/linphonerc_default @@ -18,6 +18,7 @@ size=qvga tunnel=disabled push_notification=1 auto_start=1 +debug=1 [tunnel] host= @@ -28,6 +29,4 @@ log_collection_upload_server_url=https://www.linphone.org:444/lft.php file_transfer_server_url=https://www.linphone.org:444/lft.php [proxy_default_values] -reg_proxy= -realm=sip.linphone.org -reg_identity=sip:user@sip.linphone.org +rls_uri=sips:rls@sip.linphone.org From 4943e6db675bfdd47d8c9c4557fb8c497bd098bf Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 15:54:08 +0200 Subject: [PATCH 32/45] Fix enable subscription for linphone account --- src/android/org/linphone/assistant/AssistantActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index ccfb62c5e..1cec9236a 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -388,7 +388,11 @@ private static AssistantActivity instance; lc.addAuthInfo(authInfo); lc.setDefaultProxyConfig(proxyConfig); - LinphoneManager.getInstance().subscribeFriendList(true); + + if (LinphonePreferences.instance() != null) + mPrefs.enabledFriendlistSubscription(getResources().getBoolean(R.bool.use_friendlist_subscription)); + + LinphoneManager.getInstance().subscribeFriendList(getResources().getBoolean(R.bool.use_friendlist_subscription)); if (!newAccount) { displayRegistrationInProgressDialog(); } From 11c16b182a411a9250be81409eceaa8ebed07c9f Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 15:56:34 +0200 Subject: [PATCH 33/45] Fix linphonerc_default --- res/raw/linphonerc_default | 1 - 1 file changed, 1 deletion(-) diff --git a/res/raw/linphonerc_default b/res/raw/linphonerc_default index 22821f13f..68b6e9a7e 100644 --- a/res/raw/linphonerc_default +++ b/res/raw/linphonerc_default @@ -18,7 +18,6 @@ size=qvga tunnel=disabled push_notification=1 auto_start=1 -debug=1 [tunnel] host= From 5aeea9b5455ac92ed018f26e77185f735b01eebe Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 17:31:12 +0200 Subject: [PATCH 34/45] Fix push uri on proxy config creation --- src/android/org/linphone/assistant/AssistantActivity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 1cec9236a..62fcda1ef 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -372,6 +372,9 @@ private static AssistantActivity instance; proxyConfig.setIdentity(addr.asString()); + if (LinphonePreferences.instance() != null) + proxyConfig.setContactUriParameters(LinphonePreferences.instance().getPushNotificationRegistrationID()); + proxyConfig.done(); authInfo = LinphoneCoreFactory.instance().createAuthInfo( From aebabe988d8abbd097a439311f81b26ac2ab5300 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 5 May 2017 17:50:34 +0200 Subject: [PATCH 35/45] Fix subscription list --- res/raw/linphonerc_default | 3 --- src/android/org/linphone/assistant/AssistantActivity.java | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/res/raw/linphonerc_default b/res/raw/linphonerc_default index 68b6e9a7e..c2acb3c86 100644 --- a/res/raw/linphonerc_default +++ b/res/raw/linphonerc_default @@ -26,6 +26,3 @@ port=443 [misc] log_collection_upload_server_url=https://www.linphone.org:444/lft.php file_transfer_server_url=https://www.linphone.org:444/lft.php - -[proxy_default_values] -rls_uri=sips:rls@sip.linphone.org diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 62fcda1ef..9fa218d5e 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.linphone.ContactsManager; import org.linphone.LinphoneActivity; import org.linphone.LinphoneLauncherActivity; import org.linphone.LinphoneManager; @@ -392,6 +393,9 @@ private static AssistantActivity instance; lc.setDefaultProxyConfig(proxyConfig); + if (ContactsManager.getInstance() != null) + ContactsManager.getInstance().fetchContactsAsync(); + if (LinphonePreferences.instance() != null) mPrefs.enabledFriendlistSubscription(getResources().getBoolean(R.bool.use_friendlist_subscription)); From 22f26ec6ff831106edc38e121e7e93a32116bed1 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 9 May 2017 10:45:37 +0200 Subject: [PATCH 36/45] Fix network reachability for android 7 --- src/android/org/linphone/LinphoneManager.java | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 66134f6e5..fd3ead3e2 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -151,9 +151,11 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag private BroadcastReceiver mKeepAliveReceiver; private BroadcastReceiver mDozeReceiver; private BroadcastReceiver mHookReceiver; + private BroadcastReceiver mNetworkReceiver; private IntentFilter mKeepAliveIntentFilter; private IntentFilter mDozeIntentFilter; private IntentFilter mHookIntentFilter; + private IntentFilter mNetworkIntentFilter; private Handler mHandler = new Handler(); private WakeLock mIncallWakeLock; private WakeLock mProximityWakelock; @@ -697,8 +699,23 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag } finally { try { - mServiceContext.unregisterReceiver(mKeepAliveReceiver); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { + mServiceContext.unregisterReceiver(mNetworkReceiver); + } + } catch (Exception e) { + Log.e(e); + } + try { mServiceContext.unregisterReceiver(mHookReceiver); + } catch (Exception e) { + Log.e(e); + } + try { + mServiceContext.unregisterReceiver(mKeepAliveReceiver); + } catch (Exception e) { + Log.e(e); + } + try { dozeManager(false); } catch (Exception e) { Log.e(e); @@ -843,6 +860,13 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mProximityWakelock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "manager_proximity_sensor"); + // Since Android N we need to register the network manager + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { + mNetworkReceiver = new NetworkManager(); + mNetworkIntentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); + mServiceContext.registerReceiver(mNetworkReceiver, mNetworkIntentFilter); + } + updateNetworkReachability(); resetCameraFromPreferences(); @@ -984,9 +1008,28 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag Log.e(e); } finally { - mServiceContext.unregisterReceiver(mKeepAliveReceiver); - mServiceContext.unregisterReceiver(mHookReceiver); - dozeManager(false); + try { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { + mServiceContext.unregisterReceiver(mNetworkReceiver); + } + } catch (Exception e) { + Log.e(e); + } + try { + mServiceContext.unregisterReceiver(mHookReceiver); + } catch (Exception e) { + Log.e(e); + } + try { + mServiceContext.unregisterReceiver(mKeepAliveReceiver); + } catch (Exception e) { + Log.e(e); + } + try { + dozeManager(false); + } catch (Exception e) { + Log.e(e); + } mLc = null; instance = null; } @@ -998,7 +1041,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter); } else { Log.i("[Doze Mode]: unregister"); - if (dozeModeEnabled) mServiceContext.unregisterReceiver(mDozeReceiver); + mServiceContext.unregisterReceiver(mDozeReceiver); dozeModeEnabled = false; } } From c914916e66258f88d55d1dc455f7c5cc50fa3876 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 9 May 2017 10:59:37 +0200 Subject: [PATCH 37/45] Fix assistant Check username on proxy configuration --- src/android/org/linphone/assistant/AssistantActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 9fa218d5e..2f3aa0b81 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -359,7 +359,7 @@ private static AssistantActivity instance; try { String identity = proxyConfig.getIdentity(); - if (identity == null) { + if (identity == null || accountCreator.getUsername() == null) { LinphoneUtils.displayErrorAlert(getString(R.string.error), this); return; } From 254daec287996ea9f75035835c4dc426ea20d8b9 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 9 May 2017 12:35:55 +0200 Subject: [PATCH 38/45] Fix assistant Add prefix on proxy config Link phone number on the right account --- src/android/org/linphone/AccountPreferencesFragment.java | 1 + src/android/org/linphone/assistant/AssistantActivity.java | 3 +++ .../assistant/CreateAccountCodeActivationFragment.java | 8 +++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/android/org/linphone/AccountPreferencesFragment.java b/src/android/org/linphone/AccountPreferencesFragment.java index f38767935..00be3bc26 100644 --- a/src/android/org/linphone/AccountPreferencesFragment.java +++ b/src/android/org/linphone/AccountPreferencesFragment.java @@ -254,6 +254,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen assistant.setClass(LinphoneActivity.instance(), AssistantActivity.class); assistant.putExtra("LinkPhoneNumber", true); assistant.putExtra("FromPref", true); + assistant.putExtra("AccountNumber", n); startActivity(assistant); return true; } diff --git a/src/android/org/linphone/assistant/AssistantActivity.java b/src/android/org/linphone/assistant/AssistantActivity.java index 2f3aa0b81..dd8b62081 100644 --- a/src/android/org/linphone/assistant/AssistantActivity.java +++ b/src/android/org/linphone/assistant/AssistantActivity.java @@ -376,6 +376,9 @@ private static AssistantActivity instance; if (LinphonePreferences.instance() != null) proxyConfig.setContactUriParameters(LinphonePreferences.instance().getPushNotificationRegistrationID()); + if (accountCreator.getPhoneNumber() != null && accountCreator.getPhoneNumber().length() > 0) + proxyConfig.setDialPrefix(accountCreator.getPrefix(accountCreator.getPhoneNumber())); + proxyConfig.done(); authInfo = LinphoneCoreFactory.instance().createAuthInfo( diff --git a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java index 586f35991..0f4c94ed0 100644 --- a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java +++ b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java @@ -44,7 +44,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin private TextView title, phonenumber; private EditText code; private boolean recoverAccount = false, linkAccount = false; - private int code_length; + private int code_length, accountNumber; private ImageView back; private Button checkAccount; private LinphoneAccountCreator accountCreator; @@ -59,6 +59,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin dialcode = getArguments().getString("Dialcode"); recoverAccount = getArguments().getBoolean("RecoverAccount"); linkAccount = getArguments().getBoolean("LinkAccount"); + accountNumber = getArguments().getInt("AccountNumber"); code_length = LinphonePreferences.instance().getCodeLength(); accountCreator = LinphoneCoreFactory.instance().createAccountCreator(LinphoneManager.getLc(), LinphonePreferences.instance().getXmlrpcUrl()); @@ -118,8 +119,8 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin } private void linkAccount(){ - accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(LinphonePreferences.instance().getDefaultAccountIndex())); - accountCreator.setHa1(LinphonePreferences.instance().getAccountHa1(LinphonePreferences.instance().getDefaultAccountIndex())); + accountCreator.setUsername(LinphonePreferences.instance().getAccountUsername(accountNumber)); + accountCreator.setHa1(LinphonePreferences.instance().getAccountHa1(accountNumber)); accountCreator.activatePhoneNumberLink(); } @@ -179,6 +180,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin return; } if(status.equals(LinphoneAccountCreator.RequestStatus.Ok)){ + LinphonePreferences.instance().setPrefix(accountNumber, accountCreator.getPrefix(accountCreator.getPhoneNumber())); LinphonePreferences.instance().setLinkPopupTime(""); AssistantActivity.instance().hideKeyboard(); AssistantActivity.instance().success(); From 292f7f7a2147092cc4fa28dc5876179599a6dfe1 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 9 May 2017 13:56:13 +0200 Subject: [PATCH 39/45] Fix link phone number callback --- .../linphone/assistant/CreateAccountCodeActivationFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java index 0f4c94ed0..994132cd9 100644 --- a/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java +++ b/src/android/org/linphone/assistant/CreateAccountCodeActivationFragment.java @@ -179,7 +179,7 @@ public class CreateAccountCodeActivationFragment extends Fragment implements Lin if (AssistantActivity.instance() == null) { return; } - if(status.equals(LinphoneAccountCreator.RequestStatus.Ok)){ + if(status.equals(LinphoneAccountCreator.RequestStatus.AccountActivated)){ LinphonePreferences.instance().setPrefix(accountNumber, accountCreator.getPrefix(accountCreator.getPhoneNumber())); LinphonePreferences.instance().setLinkPopupTime(""); AssistantActivity.instance().hideKeyboard(); From fe7b5ecbe918bde9e273e46b20e9d5bcba0604f8 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 9 May 2017 14:25:28 +0200 Subject: [PATCH 40/45] Change permission for tasker plugin --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 464e35237..0826a3e5d 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -271,7 +271,7 @@ + android:permission="android.permission.USE_SIP"> From 4216fdb58e62b0d01ead7528e223bb3b948c6739 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 10 May 2017 15:52:07 +0200 Subject: [PATCH 41/45] Fix incoming call view --- res/layout-land/call_incoming.xml | 4 ++-- res/layout-sw533dp-land/call_incoming.xml | 4 ++-- res/layout/call_incoming.xml | 4 ++-- .../org/linphone/CallIncomingActivity.java | 23 +++++++++++-------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/res/layout-land/call_incoming.xml b/res/layout-land/call_incoming.xml index 897be09bd..9cfa115f6 100644 --- a/res/layout-land/call_incoming.xml +++ b/res/layout-land/call_incoming.xml @@ -110,7 +110,7 @@ android:src="@drawable/call_hangup" android:background="@drawable/hangup" android:contentDescription="@string/content_description_decline" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="12dp"/> @@ -151,7 +151,7 @@ android:src="@drawable/call_audio_start" android:background="@drawable/call" android:contentDescription="@string/content_description_accept" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="12dp"/> diff --git a/res/layout-sw533dp-land/call_incoming.xml b/res/layout-sw533dp-land/call_incoming.xml index 61310581e..0b1da0e18 100644 --- a/res/layout-sw533dp-land/call_incoming.xml +++ b/res/layout-sw533dp-land/call_incoming.xml @@ -110,7 +110,7 @@ android:src="@drawable/call_hangup" android:background="@drawable/hangup" android:contentDescription="@string/content_description_decline" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="15dp"/> @@ -151,7 +151,7 @@ android:src="@drawable/call_audio_start" android:background="@drawable/call" android:contentDescription="@string/content_description_accept" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="15dp"/> diff --git a/res/layout/call_incoming.xml b/res/layout/call_incoming.xml index cc439102e..f5db7f08d 100644 --- a/res/layout/call_incoming.xml +++ b/res/layout/call_incoming.xml @@ -96,7 +96,7 @@ android:src="@drawable/call_hangup" android:background="@drawable/hangup" android:contentDescription="@string/content_description_decline" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="12dp"/> @@ -137,7 +137,7 @@ android:src="@drawable/call_audio_start" android:background="@drawable/call" android:contentDescription="@string/content_description_accept" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="12dp"/> diff --git a/src/android/org/linphone/CallIncomingActivity.java b/src/android/org/linphone/CallIncomingActivity.java index 814220633..a00344ea7 100644 --- a/src/android/org/linphone/CallIncomingActivity.java +++ b/src/android/org/linphone/CallIncomingActivity.java @@ -48,13 +48,13 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin private static CallIncomingActivity instance; private TextView name, number; - private ImageView contactPicture, accept, decline; + private ImageView contactPicture, accept, decline, arrow; private LinphoneCall mCall; private LinphoneCoreListenerBase mListener; private LinearLayout acceptUnlock; private LinearLayout declineUnlock; - private boolean alreadyAcceptedOrDeniedCall; - private float answerX; + private boolean alreadyAcceptedOrDeniedCall, begin; + private float answerX, oldMove; private float declineX; public static CallIncomingActivity instance() { @@ -91,6 +91,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin accept = (ImageView) findViewById(R.id.accept); decline = (ImageView) findViewById(R.id.decline); + arrow = (ImageView) findViewById(R.id.arrow_hangup); accept.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -110,14 +111,18 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin case MotionEvent.ACTION_DOWN: acceptUnlock.setVisibility(View.VISIBLE); decline.setVisibility(View.GONE); - answerX = motionEvent.getX(); + answerX = motionEvent.getX()+accept.getWidth()/2; + begin = true; + oldMove = 0; break; case MotionEvent.ACTION_MOVE: curX = motionEvent.getX(); - if((answerX - curX) >= 0) - view.scrollBy((int) (answerX - curX), view.getScrollY()); + view.scrollBy((int) (answerX - curX), view.getScrollY()); + oldMove -= answerX - curX; answerX = curX; - if (curX < screenWidth/4) { + if (oldMove < -25) + begin = false; + if (curX < arrow.getWidth() && !begin) { answer(); return true; } @@ -146,8 +151,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin curX = motionEvent.getX(); view.scrollBy((int) (declineX - curX), view.getScrollY()); declineX = curX; - Log.w(curX); - if (curX > (screenWidth/2)){ + if (curX > (screenWidth-arrow.getWidth()*4)) { decline(); return true; } @@ -157,7 +161,6 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin accept.setVisibility(View.VISIBLE); declineUnlock.setVisibility(View.GONE); break; - } return true; } From 4ff3e4e8e1d1e807600b1db72589d58909280bd2 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 15 May 2017 15:38:38 +0200 Subject: [PATCH 42/45] Update version + fix for x86 Android < 5 devices --- AndroidManifest.xml | 6 +++--- submodules/externals/libvpx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0826a3e5d..f959f64bf 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,11 +2,11 @@ + android:versionCode="3270" + android:versionName="3.2.7"> diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx index bdd0ae104..22aa947d5 160000 --- a/submodules/externals/libvpx +++ b/submodules/externals/libvpx @@ -1 +1 @@ -Subproject commit bdd0ae104378fc5435cbe6b03d7ae201848838d9 +Subproject commit 22aa947d577adbdd9cbfa7bb92da599254bcfb8f From f74d504f86654ded767cdc2da4a92d5eb44b81f8 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 15 May 2017 15:39:02 +0200 Subject: [PATCH 43/45] Update Changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a7f8c06d..47658c629 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,11 @@ Group changes to describe their impact on the project, as follows: ## [Incomming] +## [3.2.7] - 2017-05-15 + +### Fixed +- Crash with devices X86 on Android < 5 + ## [3.2.6] - 2017-04-10 ### Added From 014d896333d0c469b1a90cda35d81cd4027110be Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Fri, 12 May 2017 16:44:14 +0200 Subject: [PATCH 44/45] Fix register fail on delete account --- .../org/linphone/AccountPreferencesFragment.java | 4 ++-- src/android/org/linphone/LinphoneActivity.java | 8 +------- src/android/org/linphone/LinphonePreferences.java | 10 +++++----- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/android/org/linphone/AccountPreferencesFragment.java b/src/android/org/linphone/AccountPreferencesFragment.java index 00be3bc26..3fc824935 100644 --- a/src/android/org/linphone/AccountPreferencesFragment.java +++ b/src/android/org/linphone/AccountPreferencesFragment.java @@ -476,9 +476,9 @@ public class AccountPreferencesFragment extends PreferencesListFragment implemen delete.setEnabled(!isNewAccount); delete.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { - mPrefs.deleteAccount(n); + mPrefs.deleteAccount(n); + LinphoneActivity.instance().displaySettings(); LinphoneActivity.instance().refreshAccounts(); - LinphoneActivity.instance().displaySettings(); return true; } }); diff --git a/src/android/org/linphone/LinphoneActivity.java b/src/android/org/linphone/LinphoneActivity.java index 36cc41646..c5a90d568 100644 --- a/src/android/org/linphone/LinphoneActivity.java +++ b/src/android/org/linphone/LinphoneActivity.java @@ -1590,13 +1590,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick statusFragment.resetAccountStatus(); LinphoneManager.getInstance().subscribeFriendList(false); - defaultAccount.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View view) { - LinphoneActivity.instance().displayAccountSettings(0); - openOrCloseSideMenu(false); - } - }); + defaultAccount.setOnClickListener(null); } else { address.setText(proxy.getAddress().asStringUriOnly()); displayName.setText(LinphoneUtils.getAddressDisplayName(proxy.getAddress())); diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index e3bc5c336..6348374d3 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -783,11 +783,6 @@ public class LinphonePreferences { } public void deleteAccount(int n) { - LinphoneAuthInfo authInfo = getAuthInfo(n); - if (authInfo != null) { - getLc().removeAuthInfo(authInfo); - } - LinphoneProxyConfig proxyCfg = getProxyConfig(n); if (proxyCfg != null) getLc().removeProxyConfig(proxyCfg); @@ -797,6 +792,11 @@ public class LinphonePreferences { getLc().setDefaultProxyConfig(null); } + LinphoneAuthInfo authInfo = getAuthInfo(n); + if (authInfo != null) { + getLc().removeAuthInfo(authInfo); + } + getLc().refreshRegisters(); } // End of accounts settings From 5482a09a47b391ca8d0c1b92003024879cadf8f9 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Wed, 17 May 2017 16:36:56 +0200 Subject: [PATCH 45/45] [Outgrade submodule] Downgrade cmake-builder due to bug --- submodules/cmake-builder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/cmake-builder b/submodules/cmake-builder index 7b77d1eab..bc38d3ef0 160000 --- a/submodules/cmake-builder +++ b/submodules/cmake-builder @@ -1 +1 @@ -Subproject commit 7b77d1eab60e2bb88f765d679f8b4f86a1bfbd93 +Subproject commit bc38d3ef06c5be1f5f2099f11ae2060badd770f9