diff options
author | Nick Pelly <npelly@google.com> | 2010-09-29 12:10:35 -0700 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2010-09-29 12:10:35 -0700 |
commit | d83aaf28bce5472564ddfb6f3d8660459c826d17 (patch) | |
tree | 04e4a865162cc223e9d409e2f80d2c9a343caeba /src/com | |
parent | 5809d33296d60f54c7e93de2f45bd84579f70449 (diff) | |
parent | 1ff9ad3fb4947c458eaf4a99f0cd32834ee53943 (diff) | |
download | packages_apps_Settings-d83aaf28bce5472564ddfb6f3d8660459c826d17.tar.gz packages_apps_Settings-d83aaf28bce5472564ddfb6f3d8660459c826d17.tar.bz2 packages_apps_Settings-d83aaf28bce5472564ddfb6f3d8660459c826d17.zip |
resolved conflicts for merge of 1ff9ad3f to master
Change-Id: I55137a241e13ec7da1d413cf9b7fd1c1fdd8c4d1
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/settings/WirelessSettings.java | 17 | ||||
-rw-r--r-- | src/com/android/settings/nfc/NfcEnabler.java | 106 |
2 files changed, 121 insertions, 2 deletions
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java index 6d1ce8d27..22218402e 100644 --- a/src/com/android/settings/WirelessSettings.java +++ b/src/com/android/settings/WirelessSettings.java @@ -20,6 +20,7 @@ import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.settings.bluetooth.BluetoothEnabler; import com.android.settings.wifi.WifiEnabler; +import com.android.settings.nfc.NfcEnabler; import android.app.Activity; import android.app.admin.DevicePolicyManager; @@ -40,17 +41,20 @@ public class WirelessSettings extends SettingsPreferenceFragment { private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane"; private static final String KEY_TOGGLE_BLUETOOTH = "toggle_bluetooth"; private static final String KEY_TOGGLE_WIFI = "toggle_wifi"; + private static final String KEY_TOGGLE_NFC = "toggle_nfc"; private static final String KEY_WIFI_SETTINGS = "wifi_settings"; private static final String KEY_BT_SETTINGS = "bt_settings"; private static final String KEY_VPN_SETTINGS = "vpn_settings"; private static final String KEY_TETHER_SETTINGS = "tether_settings"; private static final String KEY_PROXY_SETTINGS = "proxy_settings"; + public static final String EXIT_ECM_RESULT = "exit_ecm_result"; public static final int REQUEST_CODE_EXIT_ECM = 1; private AirplaneModeEnabler mAirplaneModeEnabler; private CheckBoxPreference mAirplaneModePreference; private WifiEnabler mWifiEnabler; + private NfcEnabler mNfcEnabler; private BluetoothEnabler mBtEnabler; /** @@ -92,11 +96,13 @@ public class WirelessSettings extends SettingsPreferenceFragment { CheckBoxPreference airplane = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE); CheckBoxPreference wifi = (CheckBoxPreference) findPreference(KEY_TOGGLE_WIFI); CheckBoxPreference bt = (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH); + CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC); mAirplaneModeEnabler = new AirplaneModeEnabler(activity, airplane); mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE); mWifiEnabler = new WifiEnabler(activity, wifi); mBtEnabler = new BluetoothEnabler(activity, bt); + mNfcEnabler = new NfcEnabler(activity, nfc); String toggleable = Settings.System.getString(activity.getContentResolver(), Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS); @@ -114,9 +120,14 @@ public class WirelessSettings extends SettingsPreferenceFragment { findPreference(KEY_BT_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE); } - // Disable Bluetooth Settings if Bluetooth service is not available. + // Remove Bluetooth Settings if Bluetooth service is not available. if (ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE) == null) { - findPreference(KEY_BT_SETTINGS).setEnabled(false); + getPreferenceScreen().removePreference(bt); + } + + // Remove NFC if its not available + if (ServiceManager.getService(Context.NFC_SERVICE) == null) { + getPreferenceScreen().removePreference(nfc); } // Enable Proxy selector settings if allowed. @@ -172,6 +183,7 @@ public class WirelessSettings extends SettingsPreferenceFragment { mAirplaneModeEnabler.resume(); mWifiEnabler.resume(); mBtEnabler.resume(); + mNfcEnabler.resume(); } @Override @@ -181,6 +193,7 @@ public class WirelessSettings extends SettingsPreferenceFragment { mAirplaneModeEnabler.pause(); mWifiEnabler.pause(); mBtEnabler.pause(); + mNfcEnabler.pause(); } @Override diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java new file mode 100644 index 000000000..8bd9654cb --- /dev/null +++ b/src/com/android/settings/nfc/NfcEnabler.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.nfc; + +import com.android.settings.R; +import com.trustedlogic.trustednfc.android.NfcException; +import com.trustedlogic.trustednfc.android.NfcManager; +import android.content.Context; +import android.preference.Preference; +import android.preference.CheckBoxPreference; +import android.provider.Settings; +import android.util.Log; + +/** + * NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It is + * turns on/off Nfc and ensures the summary of the preference reflects the + * current state. + */ +public class NfcEnabler implements Preference.OnPreferenceChangeListener { + private static final String TAG = "NfcEnabler"; + + private final Context mContext; + private final CheckBoxPreference mCheckbox; + private final NfcManager mNfcManager; + + private boolean mNfcState; + + public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference) { + mContext = context; + mCheckbox = checkBoxPreference; + mNfcManager = (NfcManager) context.getSystemService(Context.NFC_SERVICE); + + if (mNfcManager == null) { + // NFC is not supported + mCheckbox.setEnabled(false); + } + } + + public void resume() { + if (mNfcManager == null) { + return; + } + mCheckbox.setOnPreferenceChangeListener(this); + mNfcState = Settings.System.getInt(mContext.getContentResolver(), + Settings.System.NFC_ON, 0) != 0; + updateUi(); + } + + public void pause() { + if (mNfcManager == null) { + return; + } + mCheckbox.setOnPreferenceChangeListener(null); + } + + public boolean onPreferenceChange(Preference preference, Object value) { + // Turn on/off Nfc + mNfcState = (Boolean) value; + setEnabled(); + + return false; + } + + private void setEnabled() { + if (mNfcState) { + try { + mNfcManager.enable(); + } catch (NfcException e) { + Log.w(TAG, "NFC enabling failed: " + e.getMessage()); + mNfcState = false; + } + + } else { + try { + mNfcManager.disable(); + } catch (NfcException e) { + Log.w(TAG, "NFC disabling failed: " + e.getMessage()); + mNfcState = true; + } + } + updateUi(); + } + + private void updateUi() { + mCheckbox.setChecked(mNfcState); + if (mNfcState) { + mCheckbox.setSummary(R.string.nfc_quick_toggle_summary); + } else { + mCheckbox.setSummary(""); + } + } +}
\ No newline at end of file |