diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 74092e58b91..ebd76373e06 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -168,6 +168,16 @@
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0d4033075c8..d1458415b18 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1256,6 +1256,27 @@
Set up voicemail, call forwarding, call waiting, caller ID
+
+ Tethering settings
+
+ Set up and manage tethering
+
+
+ Tethering settings
+
+
+ Notifications
+
+ Show a notification when USB tethering is available
+
+ USB tethering
+
+ USB connected, select to tether
+
+ Connected, select to disconnect
+
+ USB not connected
+
Mobile networks
diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml
new file mode 100644
index 00000000000..321129f3535
--- /dev/null
+++ b/res/xml/tether_prefs.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 24930212b8a..9977505434f 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -56,6 +56,15 @@
android:targetClass="com.android.settings.bluetooth.BluetoothSettings" />
+
+
+
+
0,
+ intent.getIntExtra(ConnectivityManager.EXTRA_ACTIVE_TETHER_COUNT,0)>0);
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mEnableTetherNotice.setChecked(Settings.Secure.getInt(getContentResolver(),
+ Settings.Secure.TETHER_NOTIFY, 0) != 0);
+
+ IntentFilter filter = new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED);
+ mTetherChangeReceiver = new TetherChangeReceiver();
+ registerReceiver(mTetherChangeReceiver, filter);
+
+ ConnectivityManager cm =
+ (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ updateState(cm.getTetherableIfaces().length>0, cm.getTetheredIfaces().length>0);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ unregisterReceiver(mTetherChangeReceiver);
+ mTetherChangeReceiver = null;
+ }
+
+ private void updateState(boolean isAvailable, boolean isTethered) {
+ if (isTethered) {
+ mUsbTether.setSummary(R.string.usb_tethering_active_subtext);
+ mUsbTether.setEnabled(true);
+ } else if (isAvailable) {
+ mUsbTether.setSummary(R.string.usb_tethering_available_subtext);
+ mUsbTether.setEnabled(true);
+ } else {
+ mUsbTether.setSummary(R.string.usb_tethering_unavailable_subtext);
+ mUsbTether.setEnabled(false);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+
+ if (preference == mEnableTetherNotice) {
+ boolean newState = mEnableTetherNotice.isChecked();
+ Settings.Secure.putInt(getContentResolver(),
+ Settings.Secure.TETHER_NOTIFY, newState ? 1 : 0);
+ return true;
+ }
+ return false;
+ }
+
+}