From fa80a82bbb5e843de1b124480c20647bd0ece40b Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Tue, 6 Jun 2017 13:29:39 +0200 Subject: [PATCH] Add new options in call settings -Time before auto-answering -Fix time before timeout for incoming call --- res/raw/linphonerc_factory | 1 - res/values/non_localizable_strings.xml | 2 ++ res/values/strings.xml | 2 ++ res/xml/preferences.xml | 12 ++++----- src/android/org/linphone/LinphoneManager.java | 23 ++++++++++++---- .../org/linphone/LinphonePreferences.java | 16 +++++++++++ .../org/linphone/SettingsFragment.java | 27 +++++++++++++++++-- submodules/linphone | 2 +- 8 files changed, 70 insertions(+), 15 deletions(-) diff --git a/res/raw/linphonerc_factory b/res/raw/linphonerc_factory index 3dfd803f2..48f011625 100644 --- a/res/raw/linphonerc_factory +++ b/res/raw/linphonerc_factory @@ -7,7 +7,6 @@ mtu=1300 [sip] guess_hostname=1 -inc_timeout=15 register_only_when_network_is_up=1 auto_net_state_mon=0 auto_answer_replacing_calls=1 diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index 956ce08f7..f96aa416e 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -122,6 +122,8 @@ pref_video_port_key pref_audio_port_key pref_incoming_expire_key + pref_call_timeout_key + pref_auto_answer_time_key pref_display_name_key pref_user_name_key diff --git a/res/values/strings.xml b/res/values/strings.xml index e6d1219ef..e2dd3a0d0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -350,8 +350,10 @@ Call Use device ringtone Auto answer incoming calls + Auto answer time(in milliseconds) Send in-band DTMFs(RFC2833) Send out-band DTMFs(SIP INFO) + Call timeout(in seconds) Voice mail URI diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 3ac594901..798b2d34d 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -206,6 +206,12 @@ android:key="@string/pref_auto_answer_key" android:persistent="false"/> + + - - 0) { + mLc.acceptCall(call); + LinphoneManager.getInstance().routeAudioToReceiver(); + LinphoneActivity.instance().startIncallActivity(call); + } + } catch (LinphoneCoreException e) { + Log.e(e); + } + } + } + }; + mTimer = new Timer("Auto answer"); + mTimer.schedule(lTask, mPrefs.getAutoAnswerTime()); } else if (state == State.IncomingReceived || (state == State.CallIncomingEarlyMedia && mR.getBoolean(R.bool.allow_ringing_while_early_media))) { // Brighten screen for at least 10 seconds diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index ebaa06871..1fc5970cb 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -984,6 +984,14 @@ public class LinphonePreferences { getLc().setIncomingTimeout(timeout); } + public int getInCallTimeout() { + return getLc().getInCallTimeout(); + } + + public void setInCallTimeout(int timeout) { + getLc().setInCallTimeout(timeout); + } + public String getVoiceMailUri() { return getConfig().getString("app", "voice_mail", null); } @@ -1523,6 +1531,14 @@ public class LinphonePreferences { getConfig().setBool("app", "auto_answer", enable); } + public void setAutoAnswerTime(int time) { + getConfig().setInt("app", "auto_answer_delay", time); + } + + public int getAutoAnswerTime() { + return getConfig().getInt("app", "auto_answer_delay", 0); + } + public int getCodeLength(){ return getConfig().getInt("app", "activation_code_length", 0); } diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java index 13ffa67a4..94e1d36e6 100644 --- a/src/android/org/linphone/SettingsFragment.java +++ b/src/android/org/linphone/SettingsFragment.java @@ -861,6 +861,7 @@ public class SettingsFragment extends PreferencesListFragment { CheckBoxPreference rfc2833 = (CheckBoxPreference) findPreference(getString(R.string.pref_rfc2833_dtmf_key)); CheckBoxPreference sipInfo = (CheckBoxPreference) findPreference(getString(R.string.pref_sipinfo_dtmf_key)); EditTextPreference incTimeout = (EditTextPreference) findPreference(getString(R.string.pref_incoming_call_timeout_key)); + EditTextPreference autoAnswerTime = (EditTextPreference) findPreference(getString(R.string.pref_auto_answer_time_key)); rfc2833.setChecked(mPrefs.useRfc2833Dtmfs()); @@ -868,7 +869,14 @@ public class SettingsFragment extends PreferencesListFragment { deviceRingtone.setChecked(mPrefs.isDeviceRingtoneEnabled()); autoAnswer.setChecked(mPrefs.isAutoAnswerEnabled()); incTimeout.setText(String.valueOf(mPrefs.getIncTimeout())); - incTimeout.setSummary((String.valueOf(mPrefs.getIncTimeout()))); + incTimeout.setSummary(String.valueOf(mPrefs.getIncTimeout())); + autoAnswerTime.setText(String.valueOf(mPrefs.getAutoAnswerTime())); + autoAnswerTime.setSummary(String.valueOf(mPrefs.getAutoAnswerTime())); + if (mPrefs.isAutoAnswerEnabled()) { + autoAnswerTime.setEnabled(true); + } else { + autoAnswerTime.setEnabled(false); + } setPreferenceDefaultValueAndSummary(R.string.pref_voice_mail_key, mPrefs.getVoiceMailUri()); } @@ -926,6 +934,11 @@ public class SettingsFragment extends PreferencesListFragment { public boolean onPreferenceChange(Preference preference, Object newValue) { boolean use = (Boolean) newValue; mPrefs.enableAutoAnswer(use); + if (use) { + findPreference(getString(R.string.pref_auto_answer_time_key)).setEnabled(true); + } else { + findPreference(getString(R.string.pref_auto_answer_time_key)).setEnabled(false); + } return true; } }); @@ -962,12 +975,22 @@ public class SettingsFragment extends PreferencesListFragment { findPreference(getString(R.string.pref_incoming_call_timeout_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - String value = (String) newValue; + String value = (String)newValue; mPrefs.setIncTimeout(Integer.valueOf(value)); preference.setSummary(value); return true; } }); + + findPreference(getString(R.string.pref_auto_answer_time_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String value = (String) newValue; + mPrefs.setAutoAnswerTime(Integer.valueOf(value)); + preference.setSummary(value); + return true; + } + }); } private void setEncryptionZrtp() { diff --git a/submodules/linphone b/submodules/linphone index af93de9a9..b21b16a98 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit af93de9a95171530c93e22919e88f0db0d785919 +Subproject commit b21b16a98f13ba3965a304dfd1945b5be24e6c57