diff options
author | Robert Greenwalt <robdroid@android.com> | 2010-03-04 13:29:02 -0800 |
---|---|---|
committer | Robert Greenwalt <robdroid@android.com> | 2010-03-04 18:24:11 -0800 |
commit | 209177aac6761db097c53152f6e9543f60748f15 (patch) | |
tree | 9aa63a28c1ca67c02d9af44ee17c82e8b01224a2 | |
parent | becd96e41259bb96ff3218fa961c83f28eae58d1 (diff) | |
download | packages_apps_Settings-209177aac6761db097c53152f6e9543f60748f15.zip packages_apps_Settings-209177aac6761db097c53152f6e9543f60748f15.tar.gz packages_apps_Settings-209177aac6761db097c53152f6e9543f60748f15.tar.bz2 |
Update Tethering UI
Finalizing some strings and changing the error handling.
-rw-r--r-- | res/values/strings.xml | 20 | ||||
-rw-r--r-- | res/xml/tether_prefs.xml | 19 | ||||
-rw-r--r-- | src/com/android/settings/TetherSettings.java | 147 |
3 files changed, 153 insertions, 33 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index b6cb2fa..646c038 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1374,9 +1374,9 @@ <string name="call_settings_summary">Set up voicemail, call forwarding, call waiting, caller ID</string> <!-- Tethering controls, item title to go into the tethering settings --> - <string name="tether_settings_title">Tethering settings</string> + <string name="tether_settings_title">Tethering</string> <!-- Tethering controls, the item summary for the user to go into the tethering settings --> - <string name="tether_settings_summary">Set up and manage tethering</string> + <string name="tether_settings_summary">Set up & manage tethering</string> <!-- Title of the screen for adjusting tethering settings --> <string name="tether_screen_title">Tethering settings</string> @@ -1385,15 +1385,23 @@ <string name="usb_title">USB</string> <string name="usb_tethering_button_text">USB tethering</string> <!-- USB available subtext - shown when USB is connected but not currently being tethered --> - <string name="usb_tethering_available_subtext">USB connected, select to tether</string> + <string name="usb_tethering_available_subtext">USB connected, check to tether</string> <!-- USB tethered subtext - shown when USB is connected and being tethered --> - <string name="usb_tethering_active_subtext">Connected, select to disconnect</string> + <string name="usb_tethering_active_subtext">Tethered</string> <!-- USB storage subtext - shown when tethering is disabled because USB storage is active --> - <string name="usb_tethering_storage_active_subtext">Tethering disabled (USB storage is in use)</string> + <string name="usb_tethering_storage_active_subtext">Can\'t tether when USB storage in use</string> <!-- USB unavailable subtext - shown when USB is not connected --> <string name="usb_tethering_unavailable_subtext">USB not connected</string> <!-- USB errored subtext - shown when USB is broken for some reason --> - <string name="usb_tethering_errored_subtext">USB tethering has had a problem.</string> + <string name="usb_tethering_errored_subtext">USB tethering error</string> + + <!-- Thethering help button - calls up a web view with general tethering info --> + <string name="tethering_help_button_text">Tethering help</string> + + <!-- Tethered notification text - shown in the notification bar when tethering is active --> + <string name="tethered_notifcation_title">Tethering active</string> + <!-- Tethered notification message - shown under the notification title --> + <string name="tethered_notification_message">Touch to configure</string> <!-- Wireless controls, item title to go into the network settings --> <string name="network_settings_title">Mobile networks</string> diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml index aefe6d3..bdf693f 100644 --- a/res/xml/tether_prefs.xml +++ b/res/xml/tether_prefs.xml @@ -17,21 +17,10 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/tether_screen_title"> - <PreferenceCategory - android:key="usb_category" - android:title="@string/usb_title"> - - <PreferenceScreen - android:key="usb_tether_settings" - android:title="@string/usb_tethering_button_text" - android:widgetLayout="@*android:layout/preference_dialog" > - <intent - android:action="android.intent.action.MAIN" - android:targetPackage="android" - android:targetClass="com.android.internal.app.TetherActivity" /> - </PreferenceScreen> - - </PreferenceCategory> + <CheckBoxPreference + android:key="usb_tether_settings" + android:title="@string/usb_tethering_button_text" + android:persistent="false" /> <PreferenceCategory android:key="wifi_category" diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java index 9430c19..a30f522 100644 --- a/src/com/android/settings/TetherSettings.java +++ b/src/com/android/settings/TetherSettings.java @@ -26,10 +26,10 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.os.Environment; +import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; -import android.preference.CheckBoxPreference; import android.provider.Settings; import android.util.Log; @@ -43,7 +43,7 @@ public class TetherSettings extends PreferenceActivity { private static final String ENABLE_WIFI_AP = "enable_wifi_ap"; private static final String WIFI_AP_SETTINGS = "wifi_ap_settings"; - private PreferenceScreen mUsbTether; + private CheckBoxPreference mUsbTether; private CheckBoxPreference mEnableWifiAp; private PreferenceScreen mWifiApSettings; @@ -63,9 +63,9 @@ public class TetherSettings extends PreferenceActivity { addPreferencesFromResource(R.xml.tether_prefs); - mUsbTether = (PreferenceScreen) findPreference(USB_TETHER_SETTINGS); mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP); mWifiApSettings = (PreferenceScreen) findPreference(WIFI_AP_SETTINGS); + mUsbTether = (CheckBoxPreference) findPreference(USB_TETHER_SETTINGS); ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); @@ -93,7 +93,7 @@ public class TetherSettings extends PreferenceActivity { ArrayList<String> errored = intent.getStringArrayListExtra( ConnectivityManager.EXTRA_ERRORED_TETHER); - updateState(available, active, errored); + updateState(available.toArray(), active.toArray(), errored.toArray()); } } @@ -119,26 +119,52 @@ public class TetherSettings extends PreferenceActivity { mWifiApEnabler.pause(); } - private void updateState(ArrayList<String> available, ArrayList<String> tethered, - ArrayList<String> errored) { + private void updateState() { + ConnectivityManager cm = + (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); + + String[] available = cm.getTetherableIfaces(); + String[] tethered = cm.getTetheredIfaces(); + String[] errored = cm.getTetheringErroredIfaces(); + updateState(available, tethered, errored); + } + + private void updateState(Object[] available, Object[] tethered, + Object[] errored) { + ConnectivityManager cm = + (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); boolean usbTethered = false; boolean usbAvailable = false; + int usbError = ConnectivityManager.TETHER_ERROR_NO_ERROR; boolean usbErrored = false; boolean wifiTethered = false; boolean wifiAvailable = false; + int wifiError = ConnectivityManager.TETHER_ERROR_NO_ERROR; boolean massStorageActive = Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState()); boolean wifiErrored = false; - for (String s : available) { + for (Object o : available) { + String s = (String)o; for (String regex : mUsbRegexs) { - if (s.matches(regex)) usbAvailable = true; + if (s.matches(regex)) { + usbAvailable = true; + if (usbError == ConnectivityManager.TETHER_ERROR_NO_ERROR) { + usbError = cm.getLastTetherError(s); + } + } } for (String regex : mWifiRegexs) { - if (s.matches(regex)) wifiAvailable = true; + if (s.matches(regex)) { + wifiAvailable = true; + if (wifiError == ConnectivityManager.TETHER_ERROR_NO_ERROR) { + wifiError = cm.getLastTetherError(s); + } + } } } - for (String s : tethered) { + for (Object o : tethered) { + String s = (String)o; for (String regex : mUsbRegexs) { if (s.matches(regex)) usbTethered = true; } @@ -146,7 +172,8 @@ public class TetherSettings extends PreferenceActivity { if (s.matches(regex)) wifiTethered = true; } } - for (String s: errored) { + for (Object o: errored) { + String s = (String)o; for (String regex : mUsbRegexs) { if (s.matches(regex)) usbErrored = true; } @@ -155,6 +182,9 @@ public class TetherSettings extends PreferenceActivity { } } + if (usbTethered || wifiTethered) { +// showTetheredNotification(); + } if (usbTethered) { mUsbTether.setSummary(R.string.usb_tethering_active_subtext); mUsbTether.setEnabled(true); @@ -162,7 +192,11 @@ public class TetherSettings extends PreferenceActivity { mUsbTether.setSummary(R.string.usb_tethering_storage_active_subtext); mUsbTether.setEnabled(false); } else if (usbAvailable) { - mUsbTether.setSummary(R.string.usb_tethering_available_subtext); + if (usbError == ConnectivityManager.TETHER_ERROR_NO_ERROR) { + mUsbTether.setSummary(R.string.usb_tethering_available_subtext); + } else { + mUsbTether.setSummary(R.string.usb_tethering_errored_subtext); + } mUsbTether.setEnabled(true); } else if (usbErrored) { mUsbTether.setSummary(R.string.usb_tethering_errored_subtext); @@ -172,4 +206,93 @@ public class TetherSettings extends PreferenceActivity { mUsbTether.setEnabled(false); } } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + if (preference == mUsbTether) { + boolean newState = mUsbTether.isChecked(); + + ConnectivityManager cm = + (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); + + if (newState) { + String[] available = cm.getTetherableIfaces(); + + String usbIface = findIface(available, mUsbRegexs); + if (usbIface == null) { + updateState(); + return true; + } + if (cm.tether(usbIface) != ConnectivityManager.TETHER_ERROR_NO_ERROR) { + mUsbTether.setChecked(false); + mUsbTether.setSummary(R.string.usb_tethering_errored_subtext); + return true; + } + mUsbTether.setSummary(""); + } else { + String [] tethered = cm.getTetheredIfaces(); + + String usbIface = findIface(tethered, mUsbRegexs); + if (usbIface == null) { + updateState(); + return true; + } + if (cm.untether(usbIface) != ConnectivityManager.TETHER_ERROR_NO_ERROR) { + mUsbTether.setSummary(R.string.usb_tethering_errored_subtext); + return true; + } + mUsbTether.setSummary(""); + } + } + return false; + } + + private String findIface(String[] ifaces, String[] regexes) { + for (String iface : ifaces) { + for (String regex : regexes) { + if (iface.matches(regex)) { + return iface; + } + } + } + return null; + } + +// private showTetheredNotification() { +// NotificationManager notificationManager = (NotificationManager)mContext. +// getSystemService(Context.NOTIFICATION_SERVICE); +// if (notificationManager == null) { +// return; +// } +// +// Intent intent = new Intent(); +// +// PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); +// +// Resources r = Resources.getSystem(); +// CharSequence title = r.getText(com.android.internal.R.string. +// tether_stop_notification_title); +// CharSequence message = r.getText(com.android.internal.R.string. +// tether_stop_notification_message); +// +// if(mTetheringNotification == null) { +// mTetheringNotification = new Notification(); +// mTetheringNotification.when = 0; +// } +// mTetheringNotification.icon = com.android.internal.R.drawable.stat_sys_tether_usb; +// +// boolean playSounds = false; +// //playSounds = SystemProperties.get("persist.service.mount.playsnd", "1").equals("1"); +// if (playSounds) { +// mTetheringNotification.defaults |= Notification.DEFAULT_SOUND; +// } else { +// mTetheringNotification.defaults &= ~Notification.DEFAULT_SOUND; +// } +// mTetheringNotification.flags = Notification.FLAG_ONGOING_EVENT; +// mTetheringNotification.tickerText = title; +// mTetheringNotification.setLatestEventInfo(mContext, title, message, pi); +// +// notificationManager.notify(mTetheringNotification.icon, mTetheringNotification); +// } + } |