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_disabled</item>
<item >@string/tunnel_mode_entry_value_3G_only</item> <item >@string/tunnel_mode_entry_value_3G_only</item>
<item>@string/tunnel_mode_entry_value_always</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-array>
<string name="pref_tunnel_host_key">pref_tunnel_host_key</string> <string name="pref_tunnel_host_key">pref_tunnel_host_key</string>
<string name="pref_tunnel_port_key">pref_tunnel_port_key</string> <string name="pref_tunnel_port_key">pref_tunnel_port_key</string>

View file

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

View file

@ -139,6 +139,7 @@ public class LinphoneManager implements LinphoneCoreListener {
private static boolean sExited; private static boolean sExited;
private boolean mAudioFocused; private boolean mAudioFocused;
private boolean isNetworkReachable; private boolean isNetworkReachable;
private ConnectivityManager mConnectivityManager;
private WakeLock mIncallWakeLock; private WakeLock mIncallWakeLock;
@ -178,6 +179,7 @@ public class LinphoneManager implements LinphoneCoreListener {
mAudioManager = ((AudioManager) c.getSystemService(Context.AUDIO_SERVICE)); mAudioManager = ((AudioManager) c.getSystemService(Context.AUDIO_SERVICE));
mVibrator = (Vibrator) c.getSystemService(Context.VIBRATOR_SERVICE); mVibrator = (Vibrator) c.getSystemService(Context.VIBRATOR_SERVICE);
mPowerManager = (PowerManager) c.getSystemService(Context.POWER_SERVICE); mPowerManager = (PowerManager) c.getSystemService(Context.POWER_SERVICE);
mConnectivityManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
mR = c.getResources(); 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) { private boolean isTunnelNeeded(NetworkInfo info) {
if (info == null) { if (info == null) {
@ -505,7 +518,7 @@ public class LinphoneManager implements LinphoneCoreListener {
return false; return false;
} }
public void manageTunnelServer(NetworkInfo info) { private void manageTunnelServer(NetworkInfo info) {
if (mLc == null) return; if (mLc == null) return;
if (!mLc.isTunnelAvailable()) return; if (!mLc.isTunnelAvailable()) return;
@ -598,6 +611,8 @@ public class LinphoneManager implements LinphoneCoreListener {
} }
LinphoneManager.getLc().setVideoDevice(camId); LinphoneManager.getLc().setVideoDevice(camId);
initTunnelFromConf();
TimerTask lTask = new TimerTask() { TimerTask lTask = new TimerTask() {
@Override @Override
public void run() { public void run() {

View file

@ -769,7 +769,27 @@ public class LinphonePreferences {
// Tunnel settings // Tunnel settings
public String getTunnelMode() { 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 // End of tunnel settings
} }

View file

@ -77,6 +77,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
private void initSettings() { private void initSettings() {
//Init accounts on Resume instead of on Create to update the account list when coming back from wizard //Init accounts on Resume instead of on Create to update the account list when coming back from wizard
initTunnelSettings();
initAudioSettings(); initAudioSettings();
initVideoSettings(); initVideoSettings();
initCallSettings(); initCallSettings();
@ -106,6 +107,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
// Sets listener for each preference to update the matching value in linphonecore // Sets listener for each preference to update the matching value in linphonecore
private void setListeners() { private void setListeners() {
setTunnelPreferencesListener();
setAudioPreferencesListener(); setAudioPreferencesListener();
setVideoPreferencesListener(); setVideoPreferencesListener();
setCallPreferencesListener(); setCallPreferencesListener();
@ -225,6 +227,43 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
findPreference(getString(pref)).setSummary(value); 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() { private void initAccounts() {
PreferenceCategory accounts = (PreferenceCategory) findPreference(getString(R.string.pref_sipaccounts_key)); PreferenceCategory accounts = (PreferenceCategory) findPreference(getString(R.string.pref_sipaccounts_key));
accounts.removeAll(); accounts.removeAll();