From a606c43adf3a5d0f7cd14753fafda1fdae5b2052 Mon Sep 17 00:00:00 2001 From: menghanli Date: Fri, 2 Jul 2021 16:07:30 +0800 Subject: [PATCH 1/5] Provides TC ID for accessibility framework feature for "shortcut" part Goal: Improve readability which is a bit difficult because of string concatenation for accurate translation. Root cause: In some locales, framework features name would be a word rather than a product name. Hence it need to be in the different position in a sentence. Solution: Use whole sentence to translate instead of concatenating the string could solve this issue. Bug: 185478543 Test: Manually testing Change-Id: I5a0f04e7ab0d7aa789e10ce6f611cde9bf3660c1 --- res/values/strings.xml | 8 ++++++++ ...ToggleAccessibilityServicePreferenceFragment.java | 10 ---------- .../ToggleColorInversionPreferenceFragment.java | 5 +++++ .../ToggleDaltonizerPreferenceFragment.java | 5 +++++ .../ToggleFeaturePreferenceFragment.java | 12 +++++++++--- .../ToggleReduceBrightColorsPreferenceFragment.java | 5 +++++ .../ToggleScreenMagnificationPreferenceFragment.java | 5 +++++ 7 files changed, 37 insertions(+), 13 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 26fbd795575..9f5a3b23709 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5258,6 +5258,8 @@ Caption preferences Magnification + + Magnification shortcut Magnification type @@ -5480,6 +5482,8 @@ Color inversion Use color inversion + + Color inversion shortcut
@@ -5531,6 +5535,8 @@ Open %1$s Use color correction + + Color correction shortcut Show captions @@ -5610,6 +5616,8 @@ Extra dim Make screen extra dim + + Extra dim shortcut Dim screen beyond your phone\u2019s minimum brightness diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 934907181a7..0e209aa77af 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -55,7 +55,6 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.password.ConfirmDeviceCredentialActivity; -import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.accessibility.AccessibilityUtils; import java.util.List; @@ -221,15 +220,6 @@ public class ToggleAccessibilityServicePreferenceFragment extends mComponentName); } - @Override - protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { - final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); - final String switchBarText = (info == null) ? "" : - getString(R.string.accessibility_service_primary_switch_title, - info.getResolveInfo().loadLabel(getPackageManager())); - switchPreference.setTitle(switchBarText); - } - @Override protected void updateSwitchBarToggleSwitch() { final boolean checked = isAccessibilityServiceEnabled(); diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java index b41bafda512..e06078558b7 100644 --- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java @@ -72,6 +72,11 @@ public class ToggleColorInversionPreferenceFragment extends switchPreference.setTitle(R.string.accessibility_display_inversion_switch_title); } + @Override + protected void updateShortcutTitle(ShortcutPreference shortcutPreference) { + shortcutPreference.setTitle(R.string.accessibility_display_inversion_shortcut_title); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 4bcf4781162..7cf57b9ab77 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -167,6 +167,11 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe switchPreference.setTitle(R.string.accessibility_daltonizer_primary_switch_title); } + @Override + protected void updateShortcutTitle(ShortcutPreference shortcutPreference) { + shortcutPreference.setTitle(R.string.accessibility_daltonizer_shortcut_title); + } + @Override int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 510f8d3484a..1c807eb463f 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -284,7 +284,14 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference abstract int getUserShortcutTypes(); protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { - switchPreference.setTitle(R.string.accessibility_service_primary_switch_title); + final CharSequence title = + getString(R.string.accessibility_service_primary_switch_title, mPackageName); + switchPreference.setTitle(title); + } + + protected void updateShortcutTitle(ShortcutPreference shortcutPreference) { + final CharSequence title = getString(R.string.accessibility_shortcut_title, mPackageName); + shortcutPreference.setTitle(title); } protected abstract void onPreferenceToggled(String preferenceKey, boolean enabled); @@ -434,8 +441,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference mShortcutPreference.setKey(getShortcutPreferenceKey()); mShortcutPreference.setOnClickCallback(this); - final CharSequence title = getString(R.string.accessibility_shortcut_title, mPackageName); - mShortcutPreference.setTitle(title); + updateShortcutTitle(mShortcutPreference); final PreferenceCategory generalCategory = findPreference(KEY_GENERAL_CATEGORY); generalCategory.addPreference(mShortcutPreference); diff --git a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java index e60751e56b5..6fd2e1d81d0 100644 --- a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java @@ -154,6 +154,11 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre switchPreference.setTitle(R.string.reduce_bright_colors_preference_title); } + @Override + protected void updateShortcutTitle(ShortcutPreference shortcutPreference) { + shortcutPreference.setTitle(R.string.reduce_bright_colors_shortcut_title); + } + @Override int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 9266f720ca2..6b02f04154c 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -396,6 +396,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends generalCategory.addPreference(mShortcutPreference); } + @Override + protected void updateShortcutTitle(ShortcutPreference shortcutPreference) { + shortcutPreference.setTitle(R.string.accessibility_screen_magnification_shortcut_title); + } + @Override protected void updateShortcutPreference() { final int shortcutTypes = PreferredShortcuts.retrieveUserShortcutType(getPrefContext(), From 62560c7210e7637ae99846a336e6a747b97dafbb Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 6 Jul 2021 22:00:54 +0800 Subject: [PATCH 2/5] Hide the entire progress header in Internet Settings - Hide the entire progress header to avoid showing the divider Bug: 191968967 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: I59db1c87f1088ac2d29e263a85f149ff866c435b --- .../settings/network/NetworkProviderSettings.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index f6e791753a4..38658e7b5fc 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -207,8 +207,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private WifiDialog2 mDialog; - private View mProgressHeader; - @VisibleForTesting PreferenceCategory mConnectedWifiEntryPreferenceCategory; @VisibleForTesting @@ -255,8 +253,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment return; } - mProgressHeader = setPinnedHeaderView(R.layout.progress_header) - .findViewById(R.id.progress_bar_animation); + setPinnedHeaderView(R.layout.progress_header); setProgressBarVisible(false); mWifiManager = activity.getSystemService(WifiManager.class); @@ -1006,9 +1003,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } protected void setProgressBarVisible(boolean visible) { - if (mProgressHeader != null) { - mProgressHeader.setVisibility(visible ? View.VISIBLE : View.GONE); - } + showPinnedHeader(visible); } @VisibleForTesting From 193f97c7ba6b052003aa2d0af08cb8d524b75234 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Tue, 6 Jul 2021 13:56:30 +0800 Subject: [PATCH 3/5] Network selection add NGRAN when device support SA Bug: 187148937 Test: build pass. atest NetworkScanHelperTest (pass) Change-Id: I1ed3eae3bda39eb702bc135b0c698f8df7c280d7 --- .../network/telephony/NetworkScanHelper.java | 40 +++++--- .../telephony/NetworkScanHelperTest.java | 98 +++++++++++++++++-- 2 files changed, 119 insertions(+), 19 deletions(-) rename tests/{robotests => unit}/src/com/android/settings/network/telephony/NetworkScanHelperTest.java (55%) diff --git a/src/com/android/settings/network/telephony/NetworkScanHelper.java b/src/com/android/settings/network/telephony/NetworkScanHelper.java index 524a7373de3..e0a9c5e94ae 100644 --- a/src/com/android/settings/network/telephony/NetworkScanHelper.java +++ b/src/com/android/settings/network/telephony/NetworkScanHelper.java @@ -21,11 +21,14 @@ import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.CellInfo; import android.telephony.NetworkScan; import android.telephony.NetworkScanRequest; +import android.telephony.PhoneCapability; import android.telephony.RadioAccessSpecifier; import android.telephony.TelephonyManager; import android.telephony.TelephonyScanManager; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.android.internal.telephony.CellNetworkScanResult; import com.google.common.util.concurrent.FutureCallback; @@ -37,6 +40,7 @@ import com.google.common.util.concurrent.SettableFuture; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.concurrent.CancellationException; import java.util.concurrent.Executor; @@ -111,10 +115,14 @@ public class NetworkScanHelper { public static final int NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS = 2; /** The constants below are used in the async network scan. */ - private static final boolean INCREMENTAL_RESULTS = true; - private static final int SEARCH_PERIODICITY_SEC = 5; - private static final int MAX_SEARCH_TIME_SEC = 300; - private static final int INCREMENTAL_RESULTS_PERIODICITY_SEC = 3; + @VisibleForTesting + static final boolean INCREMENTAL_RESULTS = true; + @VisibleForTesting + static final int SEARCH_PERIODICITY_SEC = 5; + @VisibleForTesting + static final int MAX_SEARCH_TIME_SEC = 300; + @VisibleForTesting + static final int INCREMENTAL_RESULTS_PERIODICITY_SEC = 3; private final NetworkScanCallback mNetworkScanCallback; private final TelephonyManager mTelephonyManager; @@ -133,7 +141,8 @@ public class NetworkScanHelper { mExecutor = executor; } - private NetworkScanRequest createNetworkScanForPreferredAccessNetworks() { + @VisibleForTesting + NetworkScanRequest createNetworkScanForPreferredAccessNetworks() { long networkTypeBitmap3gpp = mTelephonyManager.getPreferredNetworkTypeBitmask() & TelephonyManager.NETWORK_STANDARDS_FAMILY_BITMASK_3GPP; @@ -161,14 +170,13 @@ public class NetworkScanHelper { // a 5G network, which means that it shouldn't scan for 5G at the expense of battery as // part of the manual network selection process. // - // FIXME(b/151119451): re-enable this code once there is a way to distinguish SA from NSA - // support in the modem. - // - // if (networkTypeBitmap3gpp == 0 - // || (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_5G) != 0) { - // radioAccessSpecifiers.add( - // new RadioAccessSpecifier(AccessNetworkType.NGRAN, null, null)); - // } + if (networkTypeBitmap3gpp == 0 + || (hasNrSaCapability() + && (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_5G) != 0)) { + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkType.NGRAN, null, null)); + Log.d(TAG, "radioAccessSpecifiers add NGRAN."); + } return new NetworkScanRequest( NetworkScanRequest.SCAN_TYPE_ONE_SHOT, @@ -253,6 +261,12 @@ public class NetworkScanHelper { mNetworkScanCallback.onError(errCode); } + private boolean hasNrSaCapability() { + return Arrays.stream( + mTelephonyManager.getPhoneCapability().getDeviceNrCapabilities()) + .anyMatch(i -> i == PhoneCapability.DEVICE_NR_CAPABILITY_SA); + } + /** * Converts the status code of {@link CellNetworkScanResult} to one of the * {@link NetworkScan.ScanErrorCode}. diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkScanHelperTest.java similarity index 55% rename from tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java rename to tests/unit/src/com/android/settings/network/telephony/NetworkScanHelperTest.java index 1e7bfaf2f15..f046c9a6f22 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkScanHelperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2021 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. @@ -18,6 +18,7 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doAnswer; @@ -27,12 +28,18 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.telephony.AccessNetworkConstants; import android.telephony.CellInfo; +import android.telephony.ModemInfo; import android.telephony.NetworkScan; import android.telephony.NetworkScanRequest; +import android.telephony.PhoneCapability; +import android.telephony.RadioAccessSpecifier; import android.telephony.TelephonyManager; import android.telephony.TelephonyScanManager; +import androidx.test.ext.junit.runners.AndroidJUnit4; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -41,22 +48,20 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import org.robolectric.RobolectricTestRunner; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -@RunWith(RobolectricTestRunner.class) +@RunWith(AndroidJUnit4.class) public class NetworkScanHelperTest { @Mock private TelephonyManager mTelephonyManager; - @Mock private List mCellInfos; - @Mock private NetworkScanHelper.NetworkScanCallback mNetworkScanCallback; @@ -70,7 +75,7 @@ public class NetworkScanHelperTest { private NetworkScan mNetworkScan; - private class NetworkScanMock extends NetworkScan { + public class NetworkScanMock extends NetworkScan { NetworkScanMock(int scanId, int subId) { super(scanId, subId); } @@ -163,6 +168,87 @@ public class NetworkScanHelperTest { verify(mNetworkScan, times(1)).stopScan(); } + @Test + public void createNetworkScanForPreferredAccessNetworks_deviceNoNrSa_noNgran() { + int[] deviceNrCapabilities = new int[]{PhoneCapability.DEVICE_NR_CAPABILITY_NSA}; + PhoneCapability phoneCapability = createPhoneCapability(deviceNrCapabilities); + doReturn(TelephonyManager.NETWORK_CLASS_BITMASK_2G + | TelephonyManager.NETWORK_CLASS_BITMASK_3G + | TelephonyManager.NETWORK_CLASS_BITMASK_4G + | TelephonyManager.NETWORK_CLASS_BITMASK_5G).when( + mTelephonyManager).getPreferredNetworkTypeBitmask(); + doReturn(phoneCapability).when(mTelephonyManager).getPhoneCapability(); + List radioAccessSpecifiers = new ArrayList<>(); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.GERAN, null, + null)); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.UTRAN, null, + null)); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.EUTRAN, null, + null)); + NetworkScanRequest expectedNetworkScanRequest = createNetworkScanRequest( + radioAccessSpecifiers); + + assertEquals(expectedNetworkScanRequest, + mNetworkScanHelper.createNetworkScanForPreferredAccessNetworks()); + } + + @Test + public void createNetworkScanForPreferredAccessNetworks_deviceHasNrSa_hasNgran() { + int[] deviceNrCapabilities = new int[]{PhoneCapability.DEVICE_NR_CAPABILITY_NSA, + PhoneCapability.DEVICE_NR_CAPABILITY_SA}; + PhoneCapability phoneCapability = createPhoneCapability(deviceNrCapabilities); + doReturn(TelephonyManager.NETWORK_CLASS_BITMASK_2G + | TelephonyManager.NETWORK_CLASS_BITMASK_3G + | TelephonyManager.NETWORK_CLASS_BITMASK_4G + | TelephonyManager.NETWORK_CLASS_BITMASK_5G).when( + mTelephonyManager).getPreferredNetworkTypeBitmask(); + doReturn(phoneCapability).when(mTelephonyManager).getPhoneCapability(); + List radioAccessSpecifiers = new ArrayList<>(); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.GERAN, null, + null)); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.UTRAN, null, + null)); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.EUTRAN, null, + null)); + radioAccessSpecifiers.add( + new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.NGRAN, null, + null)); + NetworkScanRequest expectedNetworkScanRequest = createNetworkScanRequest( + radioAccessSpecifiers); + + assertEquals(expectedNetworkScanRequest, + mNetworkScanHelper.createNetworkScanForPreferredAccessNetworks()); + } + + private PhoneCapability createPhoneCapability(int[] deviceNrCapabilities) { + int maxActiveVoiceCalls = 1; + int maxActiveData = 2; + ModemInfo modemInfo = new ModemInfo(1, 2, true, false); + List logicalModemList = new ArrayList<>(); + logicalModemList.add(modemInfo); + return new PhoneCapability(maxActiveVoiceCalls, maxActiveData, + logicalModemList, false, deviceNrCapabilities); + } + + private NetworkScanRequest createNetworkScanRequest( + List radioAccessSpecifiers) { + return new NetworkScanRequest( + NetworkScanRequest.SCAN_TYPE_ONE_SHOT, + radioAccessSpecifiers.toArray( + new RadioAccessSpecifier[radioAccessSpecifiers.size()]), + mNetworkScanHelper.SEARCH_PERIODICITY_SEC, + mNetworkScanHelper.MAX_SEARCH_TIME_SEC, + mNetworkScanHelper.INCREMENTAL_RESULTS, + mNetworkScanHelper.INCREMENTAL_RESULTS_PERIODICITY_SEC, + null /* List of PLMN ids (MCC-MNC) */); + } + private void startNetworkScan_incremental(boolean waitForCompletion) { mNetworkScanHelper.startNetworkScan( NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS); From 2a9ab203aa899842ac18502982c7cea1dc746fa8 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Wed, 7 Jul 2021 18:11:34 +0800 Subject: [PATCH 4/5] Adjust Seekbar layout to improve scroll ability Fixes: 192362148 Test: visual verify Change-Id: I0cfc7383c224846885ce9610e25364a964d78410 --- res/layout/preference_balance_slider.xml | 2 +- res/layout/preference_labeled_slider.xml | 2 +- res/layout/preference_volume_slider.xml | 2 +- res/layout/preference_widget_seekbar_settings.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/layout/preference_balance_slider.xml b/res/layout/preference_balance_slider.xml index 7f1e809d37b..b84afbdd5ce 100644 --- a/res/layout/preference_balance_slider.xml +++ b/res/layout/preference_balance_slider.xml @@ -64,7 +64,7 @@ android:id="@*android:id/seekbar" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="0dp" - android:paddingEnd="0dp" + android:paddingEnd="12dp" android:layout_gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content"/> diff --git a/res/layout/preference_labeled_slider.xml b/res/layout/preference_labeled_slider.xml index 87230f7f280..75902cf3949 100644 --- a/res/layout/preference_labeled_slider.xml +++ b/res/layout/preference_labeled_slider.xml @@ -44,7 +44,7 @@ android:layout_width="match_parent" android:layout_height="48dp" android:paddingStart="0dp" - android:paddingEnd="0dp" + android:paddingEnd="12dp" style="@android:style/Widget.Material.SeekBar.Discrete" /> diff --git a/res/layout/preference_widget_seekbar_settings.xml b/res/layout/preference_widget_seekbar_settings.xml index 811e831d929..29b4106d64a 100644 --- a/res/layout/preference_widget_seekbar_settings.xml +++ b/res/layout/preference_widget_seekbar_settings.xml @@ -62,7 +62,7 @@ android:layout_gravity="center_vertical" android:layout_width="match_parent" android:paddingStart="0dp" - android:paddingEnd="0dp" + android:paddingEnd="12dp" android:layout_height="48dp"/> From 70304cff075e1a7c81eb6884c2661253aa1990ad Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 7 Jul 2021 15:15:13 +0800 Subject: [PATCH 5/5] Add new method to get URI to monitor battery history data is updated we will reload the database battery history data if its content is changed, which can be done through monitored the database content observer (a part of this patch cl/383366685) Bug: 192613268 Test: make SettingsRoboTests Change-Id: I24ab154b1dfa00ca4bf4e6f7b308f5061578bcb5 --- .../fuelgauge/PowerUsageAdvanced.java | 29 +++++++++++++++++++ .../fuelgauge/PowerUsageFeatureProvider.java | 6 ++++ .../PowerUsageFeatureProviderImpl.java | 6 ++++ 3 files changed, 41 insertions(+) diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java index 7c696184af6..afbb71f9ed0 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java @@ -19,8 +19,11 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.database.ContentObserver; +import android.net.Uri; import android.os.BatteryManager; import android.os.Bundle; +import android.os.Handler; import android.provider.SearchIndexableResource; import android.util.Log; @@ -31,6 +34,7 @@ import androidx.loader.content.Loader; import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.fuelgauge.BatteryBroadcastReceiver; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; @@ -63,6 +67,17 @@ public class PowerUsageAdvanced extends PowerUsageBase { private BatteryChartPreferenceController mBatteryChartPreferenceController; private BatteryAppListPreferenceController mBatteryAppListPreferenceController; + private final ContentObserver mBatteryObserver = + new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + Log.d(TAG, "onBatteryContentChange: " + selfChange); + mIsChartDataLoaded = false; + restartBatteryStatsLoader( + BatteryBroadcastReceiver.BatteryUpdateType.MANUAL); + } + }; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -104,6 +119,20 @@ public class PowerUsageAdvanced extends PowerUsageBase { super.onPause(); // Resets the flag to reload usage data in onResume() callback. mIsChartDataLoaded = false; + final Uri uri = mPowerUsageFeatureProvider.getBatteryHistoryUri(); + if (uri != null) { + getContext().getContentResolver().unregisterContentObserver(mBatteryObserver); + } + } + + @Override + public void onResume() { + super.onResume(); + final Uri uri = mPowerUsageFeatureProvider.getBatteryHistoryUri(); + if (uri != null) { + getContext().getContentResolver().registerContentObserver( + uri, /*notifyForDescendants*/ true, mBatteryObserver); + } } @Override diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 61abe6b1fbf..d91482598e2 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.util.SparseIntArray; import com.android.internal.os.BatterySipper; @@ -141,4 +142,9 @@ public interface PowerUsageFeatureProvider { * Returns battery history data with corresponding timestamp key. */ Map> getBatteryHistory(Context context); + + /** + * Returns {@link Uri} to monitor battery history data is update. + */ + Uri getBatteryHistoryUri(); } diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 1dcdab08be5..895bbb2a454 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -19,6 +19,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Process; import android.util.SparseIntArray; @@ -167,4 +168,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider public Map> getBatteryHistory(Context context) { return null; } + + @Override + public Uri getBatteryHistoryUri() { + return null; + } }