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