Added tunnel preferences handlers

This commit is contained in:
Sylvain Berfini 2013-11-08 15:08:50 +01:00
parent 6cfe459818
commit c5d1b92b2a
5 changed files with 79 additions and 4 deletions

View file

@ -16,7 +16,7 @@
<item>@string/tunnel_mode_entry_value_disabled</item>
<item >@string/tunnel_mode_entry_value_3G_only</item>
<item>@string/tunnel_mode_entry_value_always</item>
<item>@string/tunnel_mode_entry_value_auto</item>
<item>@string/tunnel_mode_entry_value_auto</item>
</string-array>
<string name="pref_tunnel_host_key">pref_tunnel_host_key</string>
<string name="pref_tunnel_port_key">pref_tunnel_port_key</string>

View file

@ -23,7 +23,8 @@
<EditTextPreference
android:title="@string/pref_tunnel_port"
android:key="@string/pref_tunnel_port_key"/>
android:key="@string/pref_tunnel_port_key"
android:numeric="integer"/>
<ListPreference
android:title="@string/pref_tunnel_mode"

View file

@ -139,6 +139,7 @@ public class LinphoneManager implements LinphoneCoreListener {
private static boolean sExited;
private boolean mAudioFocused;
private boolean isNetworkReachable;
private ConnectivityManager mConnectivityManager;
private WakeLock mIncallWakeLock;
@ -178,6 +179,7 @@ public class LinphoneManager implements LinphoneCoreListener {
mAudioManager = ((AudioManager) c.getSystemService(Context.AUDIO_SERVICE));
mVibrator = (Vibrator) c.getSystemService(Context.VIBRATOR_SERVICE);
mPowerManager = (PowerManager) c.getSystemService(Context.POWER_SERVICE);
mConnectivityManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
mR = c.getResources();
}
@ -483,6 +485,17 @@ public class LinphoneManager implements LinphoneCoreListener {
}
}
private void initTunnelFromConf() {
if (!mLc.isTunnelAvailable())
return;
NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
mLc.tunnelCleanServers();
String host = mPrefs.getTunnelHost();
int port = mPrefs.getTunnelPort();
mLc.tunnelAddServerAndMirror(host, port, 12345, 500);
manageTunnelServer(info);
}
private boolean isTunnelNeeded(NetworkInfo info) {
if (info == null) {
@ -505,7 +518,7 @@ public class LinphoneManager implements LinphoneCoreListener {
return false;
}
public void manageTunnelServer(NetworkInfo info) {
private void manageTunnelServer(NetworkInfo info) {
if (mLc == null) return;
if (!mLc.isTunnelAvailable()) return;
@ -597,6 +610,8 @@ public class LinphoneManager implements LinphoneCoreListener {
camId = androidCamera.id;
}
LinphoneManager.getLc().setVideoDevice(camId);
initTunnelFromConf();
TimerTask lTask = new TimerTask() {
@Override

View file

@ -769,7 +769,27 @@ public class LinphonePreferences {
// Tunnel settings
public String getTunnelMode() {
return null; //TODO
return getConfig().getString("app", "tunnel", getString(R.string.default_tunnel_mode_entry_value));
}
public void setTunnelMode(String mode) {
getConfig().setString("app", "tunnel", mode);
}
public String getTunnelHost() {
return getConfig().getString("tunnel", "host", getString(R.string.tunnel_host));
}
public void setTunnelHost(String host) {
getConfig().setString("tunnel", "host", host);
}
public int getTunnelPort() {
return getConfig().getInt("tunnel", "port", 443);
}
public void setTunnelPort(int port) {
getConfig().setInt("tunnel", "port", port);
}
// End of tunnel settings
}

View file

@ -77,6 +77,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
private void initSettings() {
//Init accounts on Resume instead of on Create to update the account list when coming back from wizard
initTunnelSettings();
initAudioSettings();
initVideoSettings();
initCallSettings();
@ -106,6 +107,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
// Sets listener for each preference to update the matching value in linphonecore
private void setListeners() {
setTunnelPreferencesListener();
setAudioPreferencesListener();
setVideoPreferencesListener();
setCallPreferencesListener();
@ -225,6 +227,43 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
findPreference(getString(pref)).setSummary(value);
}
private void initTunnelSettings() {
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_host_key, mPrefs.getTunnelHost());
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_port_key, mPrefs.getTunnelHost());
setPreferenceDefaultValueAndSummary(R.string.pref_tunnel_mode_key, mPrefs.getTunnelMode());
}
private void setTunnelPreferencesListener() {
findPreference(getString(R.string.pref_tunnel_host_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String host = newValue.toString();
mPrefs.setTunnelHost(host);
return true;
}
});
findPreference(getString(R.string.pref_tunnel_port_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
try {
int port = Integer.parseInt(newValue.toString());
mPrefs.setTunnelPort(port);
return true;
} catch (NumberFormatException nfe) {
return false;
}
}
});
findPreference(getString(R.string.pref_tunnel_mode_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String mode = newValue.toString();
mPrefs.setTunnelMode(mode);
return true;
}
});
}
private void initAccounts() {
PreferenceCategory accounts = (PreferenceCategory) findPreference(getString(R.string.pref_sipaccounts_key));
accounts.removeAll();