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"/> diff --git a/res/values/strings.xml b/res/values/strings.xml index d59ae9d8e65..fe7c8f59fe2 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(), 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; + } } 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 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);