Move BT, NFC out of Conntection pref
Move BT, NFC preference out of Connection Preference, To Connected devices page. Because NFC and Android Beam are controlled by the same controller, Create each controller for those preference and leave the sharing part. Change-Id: I8bc303a5f487de9c667487119b49e1e4130aa80c Fixes: 72458929 Test: manually test, make RunSettingsRoboTests
This commit is contained in:
@@ -16,90 +16,44 @@
|
||||
|
||||
package com.android.settings.nfc;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.nfc.NfcAdapter;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.support.v14.preference.SwitchPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
import android.support.v14.preference.SwitchPreference;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It turns on/off Nfc
|
||||
* and ensures the summary of the preference reflects the current state.
|
||||
*/
|
||||
public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
||||
private final Context mContext;
|
||||
private final SwitchPreference mSwitch;
|
||||
private final RestrictedPreference mAndroidBeam;
|
||||
private final NfcAdapter mNfcAdapter;
|
||||
private final IntentFilter mIntentFilter;
|
||||
private boolean mBeamDisallowedBySystem;
|
||||
public class NfcEnabler extends BaseNfcEnabler implements Preference.OnPreferenceChangeListener {
|
||||
private final SwitchPreference mPreference;
|
||||
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGED.equals(action)) {
|
||||
handleNfcStateChanged(intent.getIntExtra(NfcAdapter.EXTRA_ADAPTER_STATE,
|
||||
NfcAdapter.STATE_OFF));
|
||||
}
|
||||
}
|
||||
};
|
||||
public NfcEnabler(Context context, SwitchPreference preference) {
|
||||
super(context);
|
||||
|
||||
public NfcEnabler(Context context, SwitchPreference switchPreference,
|
||||
RestrictedPreference androidBeam) {
|
||||
mContext = context;
|
||||
mSwitch = switchPreference;
|
||||
mAndroidBeam = androidBeam;
|
||||
mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
|
||||
mBeamDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(context,
|
||||
UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId());
|
||||
|
||||
if (mNfcAdapter == null) {
|
||||
// NFC is not supported
|
||||
mSwitch.setEnabled(false);
|
||||
mAndroidBeam.setEnabled(false);
|
||||
mIntentFilter = null;
|
||||
return;
|
||||
}
|
||||
if (mBeamDisallowedBySystem) {
|
||||
mAndroidBeam.setEnabled(false);
|
||||
}
|
||||
mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
|
||||
mPreference = preference;
|
||||
}
|
||||
|
||||
public void resume() {
|
||||
if (mNfcAdapter == null) {
|
||||
return;
|
||||
super.resume();
|
||||
if (isNfcAvailable()) {
|
||||
mPreference.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
handleNfcStateChanged(mNfcAdapter.getAdapterState());
|
||||
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||
mSwitch.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
if (mNfcAdapter == null) {
|
||||
return;
|
||||
super.pause();
|
||||
if (isNfcAvailable()) {
|
||||
mPreference.setOnPreferenceChangeListener(null);
|
||||
}
|
||||
mContext.unregisterReceiver(mReceiver);
|
||||
mSwitch.setOnPreferenceChangeListener(null);
|
||||
}
|
||||
|
||||
public boolean onPreferenceChange(Preference preference, Object value) {
|
||||
// Turn NFC on/off
|
||||
|
||||
final boolean desiredState = (Boolean) value;
|
||||
mSwitch.setChecked(desiredState);
|
||||
mSwitch.setEnabled(false);
|
||||
mPreference.setChecked(desiredState);
|
||||
mPreference.setEnabled(false);
|
||||
|
||||
if (desiredState) {
|
||||
mNfcAdapter.enable();
|
||||
@@ -110,39 +64,25 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void handleNfcStateChanged(int newState) {
|
||||
@Override
|
||||
protected void handleNfcStateChanged(int newState) {
|
||||
switch (newState) {
|
||||
case NfcAdapter.STATE_OFF:
|
||||
mSwitch.setChecked(false);
|
||||
mSwitch.setEnabled(true);
|
||||
mAndroidBeam.setEnabled(false);
|
||||
mAndroidBeam.setSummary(R.string.android_beam_disabled_summary);
|
||||
break;
|
||||
case NfcAdapter.STATE_ON:
|
||||
mSwitch.setChecked(true);
|
||||
mSwitch.setEnabled(true);
|
||||
if (mBeamDisallowedBySystem) {
|
||||
mAndroidBeam.setDisabledByAdmin(null);
|
||||
mAndroidBeam.setEnabled(false);
|
||||
} else {
|
||||
mAndroidBeam.checkRestrictionAndSetDisabled(UserManager.DISALLOW_OUTGOING_BEAM);
|
||||
}
|
||||
if (mNfcAdapter.isNdefPushEnabled() && mAndroidBeam.isEnabled()) {
|
||||
mAndroidBeam.setSummary(R.string.android_beam_on_summary);
|
||||
} else {
|
||||
mAndroidBeam.setSummary(R.string.android_beam_off_summary);
|
||||
}
|
||||
break;
|
||||
case NfcAdapter.STATE_TURNING_ON:
|
||||
mSwitch.setChecked(true);
|
||||
mSwitch.setEnabled(false);
|
||||
mAndroidBeam.setEnabled(false);
|
||||
break;
|
||||
case NfcAdapter.STATE_TURNING_OFF:
|
||||
mSwitch.setChecked(false);
|
||||
mSwitch.setEnabled(false);
|
||||
mAndroidBeam.setEnabled(false);
|
||||
break;
|
||||
case NfcAdapter.STATE_OFF:
|
||||
mPreference.setChecked(false);
|
||||
mPreference.setEnabled(true);
|
||||
break;
|
||||
case NfcAdapter.STATE_ON:
|
||||
mPreference.setChecked(true);
|
||||
mPreference.setEnabled(true);
|
||||
break;
|
||||
case NfcAdapter.STATE_TURNING_ON:
|
||||
mPreference.setChecked(true);
|
||||
mPreference.setEnabled(false);
|
||||
break;
|
||||
case NfcAdapter.STATE_TURNING_OFF:
|
||||
mPreference.setChecked(false);
|
||||
mPreference.setEnabled(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user