Update network select page
1. use getPrefContext() to make sure it has correct style 2. Move operation back to bg thread so it won't block UI Bug: 114749736 Test: RunSettingsRoboTests Change-Id: I7737ea8b21d44790617b9c4f13a8c4c41037fca4
This commit is contained in:
@@ -116,14 +116,9 @@ public class NetworkOperatorPreference extends Preference {
|
|||||||
private void updateIcon(int level) {
|
private void updateIcon(int level) {
|
||||||
if (level < 0 || level >= NUMBER_OF_LEVELS) return;
|
if (level < 0 || level >= NUMBER_OF_LEVELS) return;
|
||||||
Context context = getContext();
|
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 signalDrawable = new SignalDrawable(getContext());
|
||||||
signalDrawable.setLevel(iconId);
|
signalDrawable.setLevel(
|
||||||
signalDrawable.setDarkIntensity(0);
|
SignalDrawable.getState(level, NUMBER_OF_LEVELS, false /* cutOut */));
|
||||||
|
|
||||||
// Make the network type drawable
|
// Make the network type drawable
|
||||||
int iconType = getIconIdForCell(mCellInfo);
|
int iconType = getIconIdForCell(mCellInfo);
|
||||||
@@ -134,7 +129,7 @@ public class NetworkOperatorPreference extends Preference {
|
|||||||
.getResources().getDrawable(iconType, getContext().getTheme());
|
.getResources().getDrawable(iconType, getContext().getTheme());
|
||||||
|
|
||||||
// Overlay the two drawables
|
// Overlay the two drawables
|
||||||
Drawable[] layers = {networkDrawable, signalDrawable};
|
final Drawable[] layers = {networkDrawable, signalDrawable};
|
||||||
final int iconSize =
|
final int iconSize =
|
||||||
context.getResources().getDimensionPixelSize(R.dimen.signal_strength_icon_size);
|
context.getResources().getDimensionPixelSize(R.dimen.signal_strength_icon_size);
|
||||||
|
|
||||||
|
@@ -43,6 +43,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -59,6 +60,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
|
|
||||||
private static final String TAG = "NetworkSelectSettings";
|
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_RESULTS = 2;
|
||||||
private static final int EVENT_NETWORK_SCAN_ERROR = 3;
|
private static final int EVENT_NETWORK_SCAN_ERROR = 3;
|
||||||
private static final int EVENT_NETWORK_SCAN_COMPLETED = 4;
|
private static final int EVENT_NETWORK_SCAN_COMPLETED = 4;
|
||||||
@@ -134,13 +136,10 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
mForbiddenPlmns = Arrays.asList(mTelephonyManager.getForbiddenPlmns());
|
mForbiddenPlmns = Arrays.asList(mTelephonyManager.getForbiddenPlmns());
|
||||||
setProgressBarVisible(true);
|
setProgressBarVisible(true);
|
||||||
|
|
||||||
if (mUseNewApi) {
|
mNetworkScanHelper.startNetworkScan(
|
||||||
mNetworkScanHelper.startNetworkScan(
|
mUseNewApi
|
||||||
NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS);
|
? NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS
|
||||||
} else {
|
: NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
|
||||||
mNetworkScanHelper.startNetworkScan(
|
|
||||||
NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -153,7 +152,6 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
public boolean onPreferenceTreeClick(Preference preference) {
|
public boolean onPreferenceTreeClick(Preference preference) {
|
||||||
if (preference != mSelectedPreference) {
|
if (preference != mSelectedPreference) {
|
||||||
stopNetworkQuery();
|
stopNetworkQuery();
|
||||||
setProgressBarVisible(false);
|
|
||||||
// Refresh the last selected item in case users reselect network.
|
// Refresh the last selected item in case users reselect network.
|
||||||
if (mSelectedPreference != null) {
|
if (mSelectedPreference != null) {
|
||||||
mSelectedPreference.setSummary(null);
|
mSelectedPreference.setSummary(null);
|
||||||
@@ -161,6 +159,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
|
|
||||||
mSelectedPreference = (NetworkOperatorPreference) preference;
|
mSelectedPreference = (NetworkOperatorPreference) preference;
|
||||||
CellInfo cellInfo = mSelectedPreference.getCellInfo();
|
CellInfo cellInfo = mSelectedPreference.getCellInfo();
|
||||||
|
mSelectedPreference.setSummary(R.string.network_connecting);
|
||||||
|
|
||||||
mMetricsFeatureProvider.action(getContext(),
|
mMetricsFeatureProvider.action(getContext(),
|
||||||
MetricsEvent.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
|
MetricsEvent.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
|
||||||
@@ -175,11 +174,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 OperatorInfo operatorInfo = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo);
|
||||||
final boolean isSuccess = mTelephonyManager.setNetworkSelectionModeManual(
|
ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
operatorInfo, true /* persistSelection */);
|
Message msg = mHandler.obtainMessage(EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
|
||||||
mSelectedPreference.setSummary(
|
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
|
||||||
isSuccess ? R.string.network_connected : R.string.network_could_not_connect);
|
operatorInfo, true /* persistSelection */);
|
||||||
|
msg.sendToTarget();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -204,6 +209,15 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
switch (msg.what) {
|
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:
|
case EVENT_NETWORK_SCAN_RESULTS:
|
||||||
List<CellInfo> results = aggregateCellInfoList((List<CellInfo>) msg.obj);
|
List<CellInfo> results = aggregateCellInfoList((List<CellInfo>) msg.obj);
|
||||||
mCellInfoList = new ArrayList<>(results);
|
mCellInfoList = new ArrayList<>(results);
|
||||||
@@ -267,7 +281,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
for (int index = 0; index < mCellInfoList.size(); index++) {
|
for (int index = 0; index < mCellInfoList.size(); index++) {
|
||||||
if (!mCellInfoList.get(index).isRegistered()) {
|
if (!mCellInfoList.get(index).isRegistered()) {
|
||||||
NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
||||||
mCellInfoList.get(index), getContext(), mForbiddenPlmns, mShow4GForLTE);
|
mCellInfoList.get(index), getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
|
||||||
pref.setKey(CellInfoUtil.getNetworkTitle(mCellInfoList.get(index)));
|
pref.setKey(CellInfoUtil.getNetworkTitle(mCellInfoList.get(index)));
|
||||||
pref.setOrder(index);
|
pref.setOrder(index);
|
||||||
mPreferenceCategory.addPreference(pref);
|
mPreferenceCategory.addPreference(pref);
|
||||||
@@ -303,7 +317,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
CellInfo cellInfo = CellInfoUtil.wrapCellInfoWithCellIdentity(cellIdentity);
|
CellInfo cellInfo = CellInfoUtil.wrapCellInfoWithCellIdentity(cellIdentity);
|
||||||
if (cellInfo != null) {
|
if (cellInfo != null) {
|
||||||
NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
||||||
cellInfo, getContext(), mForbiddenPlmns, mShow4GForLTE);
|
cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
|
||||||
pref.setTitle(mTelephonyManager.getNetworkOperatorName());
|
pref.setTitle(mTelephonyManager.getNetworkOperatorName());
|
||||||
pref.setSummary(R.string.network_connected);
|
pref.setSummary(R.string.network_connected);
|
||||||
// Update the signal strength icon, since the default signalStrength value would be
|
// Update the signal strength icon, since the default signalStrength value would be
|
||||||
@@ -342,7 +356,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
private void addConnectedNetworkOperatorPreference(CellInfo cellInfo) {
|
private void addConnectedNetworkOperatorPreference(CellInfo cellInfo) {
|
||||||
mConnectedPreferenceCategory.removeAll();
|
mConnectedPreferenceCategory.removeAll();
|
||||||
final NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
final NetworkOperatorPreference pref = new NetworkOperatorPreference(
|
||||||
cellInfo, getContext(), mForbiddenPlmns, mShow4GForLTE);
|
cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
|
||||||
pref.setSummary(R.string.network_connected);
|
pref.setSummary(R.string.network_connected);
|
||||||
mConnectedPreferenceCategory.addPreference(pref);
|
mConnectedPreferenceCategory.addPreference(pref);
|
||||||
mConnectedPreferenceCategory.setVisible(true);
|
mConnectedPreferenceCategory.setVisible(true);
|
||||||
|
@@ -81,6 +81,9 @@ public class NetworkSelectSettingsTest {
|
|||||||
|
|
||||||
mNetworkSelectSettings = spy(new NetworkSelectSettings());
|
mNetworkSelectSettings = spy(new NetworkSelectSettings());
|
||||||
doReturn(mContext).when(mNetworkSelectSettings).getContext();
|
doReturn(mContext).when(mNetworkSelectSettings).getContext();
|
||||||
|
doReturn(mPreferenceManager).when(mNetworkSelectSettings).getPreferenceManager();
|
||||||
|
doReturn(mContext).when(mPreferenceManager).getContext();
|
||||||
|
|
||||||
mNetworkSelectSettings.mTelephonyManager = mTelephonyManager;
|
mNetworkSelectSettings.mTelephonyManager = mTelephonyManager;
|
||||||
mNetworkSelectSettings.mConnectedPreferenceCategory = mConnectedPreferenceCategory;
|
mNetworkSelectSettings.mConnectedPreferenceCategory = mConnectedPreferenceCategory;
|
||||||
mNetworkSelectSettings.mPreferenceCategory = mPreferenceCategory;
|
mNetworkSelectSettings.mPreferenceCategory = mPreferenceCategory;
|
||||||
|
Reference in New Issue
Block a user