diff options
| author | 2017-01-18 13:45:59 -0500 | |
|---|---|---|
| committer | 2017-01-18 13:45:59 -0500 | |
| commit | 8cff199b09d6f4fe6e6aca944a8c047df5c8b7f6 (patch) | |
| tree | d6d7d179cc29c9963a5f87eb3712ddc3c29ee9e2 | |
| parent | 1a2a860d2c7c6c3b9c99ed302d391973496cccfc (diff) | |
| parent | 54bce9c6ff1f42d130b84f228e265b331a388f80 (diff) | |
resolve merge conflicts of 54bce9c6ff1f to nyc-mr2-dev-plus-aosp
Change-Id: Ifaea1d0f58ea81a7d929dc891fe69c8d7c15af4e
6 files changed, 211 insertions, 0 deletions
diff --git a/packages/SystemUI/res/drawable/ic_qs_nfc_disabled.xml b/packages/SystemUI/res/drawable/ic_qs_nfc_disabled.xml new file mode 100644 index 000000000000..558f3d083f42 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_qs_nfc_disabled.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2016 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + <path + android:pathData="M4 20h16V4H4v16z" /> + <path + android:fillColor="#4DFFFFFF" + android:pathData="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1 .9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 +18H4V4h16v16zM18 6h-5c-1.1 0-2 .9-2 2v2.28c-.6 .35 -1 .98-1 1.72 0 1.1 .9 2 2 +2s2-.9 2-2c0-.74-.4-1.38-1-1.72V8h3v8H8V8h2V6H6v12h12V6z" /> + <path + android:pathData="M0 0h24v24H0z" /> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_nfc_enabled.xml b/packages/SystemUI/res/drawable/ic_qs_nfc_enabled.xml new file mode 100644 index 000000000000..becb18ad8ba2 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_qs_nfc_enabled.xml @@ -0,0 +1,31 @@ +<!-- + Copyright (C) 2016 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + <path + android:pathData="M4 20h16V4H4v16z" /> + <path + android:fillColor="#FFFFFFFF" + android:pathData="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1 .9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 +18H4V4h16v16zM18 6h-5c-1.1 0-2 .9-2 2v2.28c-.6 .35 -1 .98-1 1.72 0 1.1 .9 2 2 +2s2-.9 2-2c0-.74-.4-1.38-1-1.72V8h3v8H8V8h2V6H6v12h12V6z" /> + <path + android:pathData="M0 0h24v24H0z" /> +</vector> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index c396e022a887..337529a311d5 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -761,6 +761,12 @@ <string name="quick_settings_night_display_summary_on">Night Light on, tap to turn off</string> <!-- QuickSettings: Label for the toggle to activate Night display when it's off (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] --> <string name="quick_settings_night_display_summary_off">Night Light off, tap to turn on</string> + <!-- QuickSettings: NFC tile [CHAR LIMIT=NONE] --> + <string name="quick_settings_nfc_label">NFC</string> + <!-- QuickSettings: NFC (off) [CHAR LIMIT=NONE] --> + <string name="quick_settings_nfc_off">NFC is disabled</string> + <!-- QuickSettings: NFC (on) [CHAR LIMIT=NONE] --> + <string name="quick_settings_nfc_on">NFC is enabled</string> <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] --> <string name="recents_empty_message">No recent items</string> diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java new file mode 100644 index 000000000000..9904c6ee438e --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2016, The Android Open Source Project + * Contributed by the Paranoid Android 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.systemui.qs.tiles; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; +import android.nfc.NfcAdapter; +import android.provider.Settings; +import android.widget.Switch; + +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.MetricsProto.MetricsEvent; +import com.android.systemui.R; +import com.android.systemui.qs.QSTile; + +/** Quick settings tile: Enable/Disable NFC **/ +public class NfcTile extends QSTile<QSTile.BooleanState> { + + private NfcAdapter mAdapter; + + private boolean mListening; + + public NfcTile(Host host) { + super(host); + } + + @Override + public BooleanState newTileState() { + return new BooleanState(); + } + + @Override + public void setListening(boolean listening) { + mListening = listening; + if (mListening) { + mContext.registerReceiver(mNfcReceiver, + new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)); + if (mAdapter == null) { + try { + mAdapter = NfcAdapter.getNfcAdapter(mContext); + } catch (UnsupportedOperationException e) { + mAdapter = null; + } + } + } else { + mContext.unregisterReceiver(mNfcReceiver); + } + } + + @Override + public boolean isAvailable() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC); + } + + @Override + protected void handleUserSwitch(int newUserId) { + } + + @Override + public Intent getLongClickIntent() { + return new Intent(Settings.ACTION_NFC_SETTINGS); + } + + @Override + protected void handleClick() { + if (mAdapter == null) return; + MetricsLogger.action(mContext, getMetricsCategory(), !mState.value); + if (!mAdapter.isEnabled()) { + mAdapter.enable(); + } else { + mAdapter.disable(); + } + } + + @Override + protected void handleSecondaryClick() { + handleClick(); + } + + @Override + public CharSequence getTileLabel() { + return mContext.getString(R.string.quick_settings_nfc_label); + } + + @Override + protected void handleUpdateState(BooleanState state, Object arg) { + final Drawable mEnable = mContext.getDrawable(R.drawable.ic_qs_nfc_enabled); + final Drawable mDisable = mContext.getDrawable(R.drawable.ic_qs_nfc_disabled); + state.value = mAdapter == null ? false : mAdapter.isEnabled(); + state.label = mContext.getString(R.string.quick_settings_nfc_label); + state.icon = new DrawableIcon(state.value ? mEnable : mDisable); + state.minimalAccessibilityClassName = state.expandedAccessibilityClassName + = Switch.class.getName(); + state.contentDescription = state.label; + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.QS_NFC; + } + + @Override + protected String composeChangeAnnouncement() { + if (mState.value) { + return mContext.getString(R.string.quick_settings_nfc_on); + } else { + return mContext.getString(R.string.quick_settings_nfc_off); + } + } + + private BroadcastReceiver mNfcReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + refreshState(); + } + }; +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java index 51992c828f06..9a39ed51a6ea 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java @@ -52,6 +52,7 @@ import com.android.systemui.qs.tiles.FlashlightTile; import com.android.systemui.qs.tiles.HotspotTile; import com.android.systemui.qs.tiles.IntentTile; import com.android.systemui.qs.tiles.LocationTile; +import com.android.systemui.qs.tiles.NfcTile; import com.android.systemui.qs.tiles.NightDisplayTile; import com.android.systemui.qs.tiles.RotationLockTile; import com.android.systemui.qs.tiles.UserTile; @@ -441,6 +442,7 @@ public class QSTileHost implements QSTile.Host, Tunable { else if (tileSpec.equals("battery")) return new BatteryTile(this); else if (tileSpec.equals("saver")) return new DataSaverTile(this); else if (tileSpec.equals("night")) return new NightDisplayTile(this); + else if (tileSpec.equals("nfc")) return new NfcTile(this); // Intent tiles. else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(this,tileSpec); else if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(this,tileSpec); diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto index ff3a9c5fa7b9..9c571a2585eb 100644 --- a/proto/src/metrics_constants.proto +++ b/proto/src/metrics_constants.proto @@ -2247,6 +2247,11 @@ message MetricsEvent { // ---- End N-MR2 Constants, all N-MR2 constants go above this line ---- + // OPEN: QS NFC tile shown + // ACTION: QS NFC tile tapped + // CATEGORY: QUICK_SETTINGS + QS_NFC = 800; + // Add new aosp constants above this line. // END OF AOSP CONSTANTS } |