summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/settings/CryptKeeper.java30
-rw-r--r--src/com/android/settings/DataUsageSummary.java39
-rw-r--r--src/com/android/settings/net/DataUsageMeteredSettings.java9
-rw-r--r--src/com/android/settings/wifi/WifiSettings.java11
4 files changed, 62 insertions, 27 deletions
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 2739d91..10c067d 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -33,6 +33,7 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.os.storage.IMountService;
+import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -49,6 +50,7 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.internal.telephony.ITelephony;
+import com.android.internal.telephony.Phone;
import java.util.List;
@@ -296,6 +298,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
| StatusBarManager.DISABLE_HOME
| StatusBarManager.DISABLE_RECENT);
+ setAirplaneModeIfNecessary();
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// Check for (and recover) retained instance data
final Object lastInstance = getLastNonConfigurationInstance();
@@ -607,6 +610,33 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
}
/**
+ * Set airplane mode on the device if it isn't an LTE device.
+ * Full story: In minimal boot mode, we cannot save any state. In particular, we cannot save
+ * any incoming SMS's. So SMSs that are received here will be silently dropped to the floor.
+ * That is bad. Also, we cannot receive any telephone calls in this state. So to avoid
+ * both these problems, we turn the radio off. However, on certain networks turning on and
+ * off the radio takes a long time. In such cases, we are better off leaving the radio
+ * running so the latency of an E911 call is short.
+ * The behavior after this is:
+ * 1. Emergency dialing: the emergency dialer has logic to force the device out of
+ * airplane mode and restart the radio.
+ * 2. Full boot: we read the persistent settings from the previous boot and restore the
+ * radio to whatever it was before it restarted. This also happens when rebooting a
+ * phone that has no encryption.
+ */
+ private final void setAirplaneModeIfNecessary() {
+ final boolean isLteDevice =
+ TelephonyManager.getDefault().getLteOnCdmaMode() == Phone.LTE_ON_CDMA_TRUE;
+ if (!isLteDevice) {
+ Log.d(TAG, "Going into airplane mode.");
+ Settings.System.putInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 1);
+ final Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ intent.putExtra("state", true);
+ sendBroadcast(intent);
+ }
+ }
+
+ /**
* Code to update the state of, and handle clicks from, the "Emergency call" button.
*
* This code is mostly duplicated from the corresponding code in
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 1255b6b..3b0ce59 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -394,9 +394,6 @@ public class DataUsageSummary extends Fragment {
mUsageSummary = (TextView) mHeader.findViewById(R.id.usage_summary);
mEmpty = (TextView) mHeader.findViewById(android.R.id.empty);
- // only assign layout transitions once first layout is finished
- mListView.getViewTreeObserver().addOnGlobalLayoutListener(mFirstLayoutListener);
-
mAdapter = new DataUsageAdapter(mUidDetailProvider, mInsetSide);
mListView.setOnItemClickListener(mListListener);
mListView.setAdapter(mAdapter);
@@ -574,25 +571,22 @@ public class DataUsageSummary extends Fragment {
}
/**
- * Listener to setup {@link LayoutTransition} after first layout pass.
+ * Build and assign {@link LayoutTransition} to various containers. Should
+ * only be assigned after initial layout is complete.
*/
- private OnGlobalLayoutListener mFirstLayoutListener = new OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- mListView.getViewTreeObserver().removeOnGlobalLayoutListener(mFirstLayoutListener);
-
- mTabsContainer.setLayoutTransition(buildLayoutTransition());
- mHeader.setLayoutTransition(buildLayoutTransition());
- mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition());
-
- final LayoutTransition chartTransition = buildLayoutTransition();
- chartTransition.setStartDelay(LayoutTransition.APPEARING, 0);
- chartTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0);
- chartTransition.setAnimator(LayoutTransition.APPEARING, null);
- chartTransition.setAnimator(LayoutTransition.DISAPPEARING, null);
- mChart.setLayoutTransition(chartTransition);
- }
- };
+ private void ensureLayoutTransitions() {
+ // skip when already setup
+ if (mChart.getLayoutTransition() != null) return;
+
+ mTabsContainer.setLayoutTransition(buildLayoutTransition());
+ mHeader.setLayoutTransition(buildLayoutTransition());
+ mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition());
+
+ final LayoutTransition chartTransition = buildLayoutTransition();
+ chartTransition.disableTransitionType(LayoutTransition.APPEARING);
+ chartTransition.disableTransitionType(LayoutTransition.DISAPPEARING);
+ mChart.setLayoutTransition(chartTransition);
+ }
private static LayoutTransition buildLayoutTransition() {
final LayoutTransition transition = new LayoutTransition();
@@ -1176,6 +1170,9 @@ public class DataUsageSummary extends Fragment {
}
mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase));
+
+ // initial layout is finished above, ensure we have transitions
+ ensureLayoutTransitions();
}
private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks<
diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java
index fea8a12..69326bc 100644
--- a/src/com/android/settings/net/DataUsageMeteredSettings.java
+++ b/src/com/android/settings/net/DataUsageMeteredSettings.java
@@ -48,6 +48,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
private PreferenceCategory mMobileCategory;
private PreferenceCategory mWifiCategory;
+ private Preference mWifiDisabled;
@Override
public void onCreate(Bundle icicle) {
@@ -63,9 +64,9 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
addPreferencesFromResource(R.xml.data_usage_metered_prefs);
mMobileCategory = (PreferenceCategory) findPreference("mobile");
mWifiCategory = (PreferenceCategory) findPreference("wifi");
+ mWifiDisabled = findPreference("wifi_disabled");
updateNetworks(context);
-
}
private void updateNetworks(Context context) {
@@ -76,15 +77,15 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
getPreferenceScreen().removePreference(mMobileCategory);
}
- if (hasWifiRadio(context)) {
- mWifiCategory.removeAll();
+ mWifiCategory.removeAll();
+ if (hasWifiRadio(context) && mWifiManager.isWifiEnabled()) {
for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
if (config.SSID != null) {
mWifiCategory.addPreference(buildWifiPref(context, config));
}
}
} else {
- getPreferenceScreen().removePreference(mWifiCategory);
+ mWifiCategory.addPreference(mWifiDisabled);
}
}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index a50b3cf..8772f53 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -269,7 +269,9 @@ public class WifiSettings extends SettingsPreferenceFragment
if (mShowMenu) {
registerForContextMenu(getListView());
}
- setHasOptionsMenu(mShowMenu);
+ // FIXME: When WPS image button is implemented, use mShowMenu instead of always showing
+ // the options menu
+ setHasOptionsMenu(true);
// After confirming PreferenceScreen is available, we call super.
super.onActivityCreated(savedInstanceState);
@@ -304,8 +306,8 @@ public class WifiSettings extends SettingsPreferenceFragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
if (mShowMenu) {
- final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
.setEnabled(wifiIsEnabled)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
@@ -327,6 +329,11 @@ public class WifiSettings extends SettingsPreferenceFragment
menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
//.setIcon(android.R.drawable.ic_menu_manage)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ } else {
+ // FIXME: Interim support for WPS, until ImageButton is available
+ menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
+ .setEnabled(wifiIsEnabled)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
super.onCreateOptionsMenu(menu, inflater);
}