Merge "Update network select page"

This commit is contained in:
TreeHugger Robot
2018-10-31 18:56:43 +00:00
committed by Android (Google) Code Review
3 changed files with 35 additions and 23 deletions

View File

@@ -116,14 +116,9 @@ public class NetworkOperatorPreference extends Preference {
private void updateIcon(int level) {
if (level < 0 || level >= NUMBER_OF_LEVELS) return;
Context context = getContext();
// Make the signal strength drawable
int iconId = 0;
if (DBG) Log.d(TAG, "updateIcon level: " + String.valueOf(level));
iconId = SignalDrawable.getState(level, NUMBER_OF_LEVELS, false /* cutOut */);
SignalDrawable signalDrawable = new SignalDrawable(getContext());
signalDrawable.setLevel(iconId);
signalDrawable.setDarkIntensity(0);
signalDrawable.setLevel(
SignalDrawable.getState(level, NUMBER_OF_LEVELS, false /* cutOut */));
// Make the network type drawable
int iconType = getIconIdForCell(mCellInfo);
@@ -134,7 +129,7 @@ public class NetworkOperatorPreference extends Preference {
.getResources().getDrawable(iconType, getContext().getTheme());
// Overlay the two drawables
Drawable[] layers = {networkDrawable, signalDrawable};
final Drawable[] layers = {networkDrawable, signalDrawable};
final int iconSize =
context.getResources().getDimensionPixelSize(R.dimen.signal_strength_icon_size);

View File

@@ -44,6 +44,7 @@ import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList;
import java.util.Arrays;
@@ -60,6 +61,7 @@ public class NetworkSelectSettings extends DashboardFragment {
private static final String TAG = "NetworkSelectSettings";
private static final int EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE = 1;
private static final int EVENT_NETWORK_SCAN_RESULTS = 2;
private static final int EVENT_NETWORK_SCAN_ERROR = 3;
private static final int EVENT_NETWORK_SCAN_COMPLETED = 4;
@@ -135,13 +137,10 @@ public class NetworkSelectSettings extends DashboardFragment {
mForbiddenPlmns = Arrays.asList(mTelephonyManager.getForbiddenPlmns());
setProgressBarVisible(true);
if (mUseNewApi) {
mNetworkScanHelper.startNetworkScan(
NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS);
} else {
mNetworkScanHelper.startNetworkScan(
NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
}
mNetworkScanHelper.startNetworkScan(
mUseNewApi
? NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS
: NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
}
@Override
@@ -154,7 +153,6 @@ public class NetworkSelectSettings extends DashboardFragment {
public boolean onPreferenceTreeClick(Preference preference) {
if (preference != mSelectedPreference) {
stopNetworkQuery();
setProgressBarVisible(false);
// Refresh the last selected item in case users reselect network.
if (mSelectedPreference != null) {
mSelectedPreference.setSummary(null);
@@ -162,6 +160,7 @@ public class NetworkSelectSettings extends DashboardFragment {
mSelectedPreference = (NetworkOperatorPreference) preference;
CellInfo cellInfo = mSelectedPreference.getCellInfo();
mSelectedPreference.setSummary(R.string.network_connecting);
mMetricsFeatureProvider.action(getContext(),
MetricsEvent.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
@@ -176,11 +175,17 @@ public class NetworkSelectSettings extends DashboardFragment {
}
}
setProgressBarVisible(true);
// Disable the screen until network is manually set
getPreferenceScreen().setEnabled(false);
final OperatorInfo operatorInfo = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo);
final boolean isSuccess = mTelephonyManager.setNetworkSelectionModeManual(
operatorInfo, true /* persistSelection */);
mSelectedPreference.setSummary(
isSuccess ? R.string.network_connected : R.string.network_could_not_connect);
ThreadUtils.postOnBackgroundThread(() -> {
Message msg = mHandler.obtainMessage(EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
operatorInfo, true /* persistSelection */);
msg.sendToTarget();
});
}
return true;
@@ -205,6 +210,15 @@ public class NetworkSelectSettings extends DashboardFragment {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE:
setProgressBarVisible(false);
getPreferenceScreen().setEnabled(true);
boolean isSucceed = (boolean) msg.obj;
mSelectedPreference.setSummary(isSucceed
? R.string.network_connected
: R.string.network_could_not_connect);
break;
case EVENT_NETWORK_SCAN_RESULTS:
List<CellInfo> results = aggregateCellInfoList((List<CellInfo>) msg.obj);
mCellInfoList = new ArrayList<>(results);
@@ -268,7 +282,7 @@ public class NetworkSelectSettings extends DashboardFragment {
for (int index = 0; index < mCellInfoList.size(); index++) {
if (!mCellInfoList.get(index).isRegistered()) {
NetworkOperatorPreference pref = new NetworkOperatorPreference(
mCellInfoList.get(index), getContext(), mForbiddenPlmns, mShow4GForLTE);
mCellInfoList.get(index), getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
pref.setKey(CellInfoUtil.getNetworkTitle(mCellInfoList.get(index)));
pref.setOrder(index);
mPreferenceCategory.addPreference(pref);
@@ -304,7 +318,7 @@ public class NetworkSelectSettings extends DashboardFragment {
CellInfo cellInfo = CellInfoUtil.wrapCellInfoWithCellIdentity(cellIdentity);
if (cellInfo != null) {
NetworkOperatorPreference pref = new NetworkOperatorPreference(
cellInfo, getContext(), mForbiddenPlmns, mShow4GForLTE);
cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
pref.setTitle(mTelephonyManager.getNetworkOperatorName());
pref.setSummary(R.string.network_connected);
// Update the signal strength icon, since the default signalStrength value would be
@@ -343,7 +357,7 @@ public class NetworkSelectSettings extends DashboardFragment {
private void addConnectedNetworkOperatorPreference(CellInfo cellInfo) {
mConnectedPreferenceCategory.removeAll();
final NetworkOperatorPreference pref = new NetworkOperatorPreference(
cellInfo, getContext(), mForbiddenPlmns, mShow4GForLTE);
cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
pref.setSummary(R.string.network_connected);
mConnectedPreferenceCategory.addPreference(pref);
mConnectedPreferenceCategory.setVisible(true);

View File

@@ -81,6 +81,9 @@ public class NetworkSelectSettingsTest {
mNetworkSelectSettings = spy(new NetworkSelectSettings());
doReturn(mContext).when(mNetworkSelectSettings).getContext();
doReturn(mPreferenceManager).when(mNetworkSelectSettings).getPreferenceManager();
doReturn(mContext).when(mPreferenceManager).getContext();
mNetworkSelectSettings.mTelephonyManager = mTelephonyManager;
mNetworkSelectSettings.mConnectedPreferenceCategory = mConnectedPreferenceCategory;
mNetworkSelectSettings.mPreferenceCategory = mPreferenceCategory;