| /* |
| * Copyright (C) 2013 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; |
| |
| import android.app.AlertDialog; |
| import android.content.DialogInterface; |
| import android.nfc.NfcAdapter; |
| import android.nfc.NfcUnlock; |
| import android.os.Bundle; |
| import android.preference.CheckBoxPreference; |
| import android.preference.Preference; |
| |
| import android.preference.PreferenceCategory; |
| import android.util.Log; |
| import com.android.internal.widget.LockPatternUtils; |
| |
| import java.text.DateFormat; |
| import java.util.Date; |
| |
| import static android.preference.Preference.OnPreferenceClickListener; |
| |
| public class NfcLockFragment extends SettingsPreferenceFragment { |
| |
| private static final String NFC_PAIRING = "nfc_pairing"; |
| private static final String NFC_UNLOCK_ENABLED = "nfc_unlock_enabled"; |
| private static final String TAGS_CATEGORY = "nfc_unlock_tags_category"; |
| private static final String TAG_FORMAT = "Tag # %d"; |
| |
| private NfcUnlock mNfcUnlock; |
| private LockPatternUtils mLockPatternUtils; |
| private NfcAdapter mNfcAdapter; |
| |
| @Override |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| mNfcUnlock = NfcUnlock.getInstance(NfcAdapter.getDefaultAdapter(getActivity())); |
| mLockPatternUtils = new LockPatternUtils(getActivity()); |
| mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity()); |
| addPreferencesFromResource(R.xml.security_settings_nfc_unlock); |
| } |
| |
| @Override |
| public void onResume() { |
| super.onResume(); |
| |
| boolean prefsEnabled = (mLockPatternUtils.isLockPasswordEnabled() || |
| mLockPatternUtils.isLockPatternEnabled()) && mNfcAdapter.isEnabled(); |
| CheckBoxPreference unlockPref = (CheckBoxPreference) findPreference(NFC_UNLOCK_ENABLED); |
| unlockPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { |
| @Override |
| public boolean onPreferenceChange(Preference preference, Object newValue) { |
| mNfcUnlock.setNfcUnlockEnabled((Boolean) newValue); |
| return true; |
| } |
| }); |
| Preference pairingPref = findPreference(NFC_PAIRING); |
| unlockPref.setEnabled(prefsEnabled); |
| pairingPref.setEnabled(prefsEnabled); |
| |
| long[] tagRegistryTimes = mNfcUnlock.getTagRegistryTimes(); |
| unlockPref.setChecked(mNfcUnlock.getNfcUnlockEnabled()); |
| |
| final PreferenceCategory pairedTags = (PreferenceCategory) findPreference(TAGS_CATEGORY); |
| pairedTags.setEnabled(prefsEnabled); |
| |
| loadTagList(tagRegistryTimes, pairedTags); |
| } |
| |
| private void loadTagList(long[] tagRegistryTimes, final PreferenceCategory pairedTags) { |
| pairedTags.removeAll(); |
| |
| for (int i = 0; i < tagRegistryTimes.length; i++) { |
| |
| final Preference thisPreference = new Preference(getActivity()); |
| final long timestamp = tagRegistryTimes[i]; |
| |
| thisPreference.setTitle(String.format(TAG_FORMAT, i)); |
| thisPreference.setSummary( |
| DateFormat.getDateTimeInstance().format(new Date(tagRegistryTimes[i]))); |
| thisPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { |
| @Override |
| public boolean onPreferenceClick(Preference preference) { |
| |
| AlertDialog.Builder deleteDialogBuilder = new AlertDialog.Builder(getActivity()); |
| |
| deleteDialogBuilder.setTitle(thisPreference.getTitle()); |
| deleteDialogBuilder.setItems(new String[] {"Delete"}, |
| new DialogInterface.OnClickListener() { |
| @Override |
| public void onClick(DialogInterface dialog, int which) { |
| if (which == 0) { |
| if (mNfcUnlock.deregisterTag(timestamp)) { |
| loadTagList(mNfcUnlock.getTagRegistryTimes(), |
| pairedTags); |
| } |
| } |
| } |
| }); |
| |
| |
| deleteDialogBuilder.show(); |
| |
| return true; |
| } |
| }); |
| |
| |
| pairedTags.addPreference(thisPreference); |
| } |
| } |
| } |