Loading packages/SystemUI/res/drawable/ic_qs_nfc_disabled.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- 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> packages/SystemUI/res/drawable/ic_qs_nfc_enabled.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- 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> packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> Loading packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java 0 → 100644 +136 −0 Original line number Diff line number Diff line /* * 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(); } }; } packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading
packages/SystemUI/res/drawable/ic_qs_nfc_disabled.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- 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>
packages/SystemUI/res/drawable/ic_qs_nfc_enabled.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- 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>
packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java 0 → 100644 +136 −0 Original line number Diff line number Diff line /* * 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(); } }; }
packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading