From c06d4c48a9455d6018f2d793c6b8f211f1131055 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 25 Feb 2011 14:35:20 -0800 Subject: [PATCH] Remove more entries not relevant to wifi-only devices. Bug: 3488384 Bug: 3487976 Bug: 3488381 Removed Cell standby entry from Battery use screen. Removed Mobile signal strength from BatteryHistory screen. Added wifi IP address to About->Status Remove auto-timezone checkbox in Settings->Date & time Change-Id: I228721a3613b1aeb600026e42274337886552698 --- res/xml/device_info_status.xml | 5 + .../android/settings/DateTimeSettings.java | 7 +- .../android/settings/DeviceInfoSettings.java | 25 +++- src/com/android/settings/Utils.java | 26 ++++ .../android/settings/deviceinfo/Status.java | 123 +++++++++++------- .../fuelgauge/BatteryHistoryChart.java | 33 +++-- .../settings/fuelgauge/PowerUsageSummary.java | 5 +- .../settings/wifi/AdvancedSettings.java | 12 +- 8 files changed, 163 insertions(+), 73 deletions(-) diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml index 92abf9d8269..369c565faaa 100644 --- a/res/xml/device_info_status.xml +++ b/res/xml/device_info_status.xml @@ -90,6 +90,11 @@ android:title="@string/status_imei_sv" android:summary="@string/device_info_not_available" android:persistent="false" /> + = (SystemClock.uptimeMillis()-500)) { diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index dd80222ab16..18c6159f210 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -25,6 +25,8 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.Resources.NotFoundException; import android.graphics.drawable.Drawable; +import android.net.ConnectivityManager; +import android.net.LinkProperties; import android.os.Bundle; import android.os.SystemProperties; import android.preference.Preference; @@ -33,6 +35,8 @@ import android.preference.PreferenceActivity.Header; import android.telephony.TelephonyManager; import android.text.TextUtils; +import java.net.InetAddress; +import java.util.Iterator; import java.util.List; public class Utils { @@ -282,4 +286,26 @@ public class Utils { public static boolean isWifiOnly() { return "wifi-only".equals(SystemProperties.get("ro.carrier")); } + + /** + * Returns the WIFI IP Addresses, if any, taking into account IPv4 and IPv6 style addresses. + * @param context the application context + * @return the formatted and comma-separated IP addresses, or null if none. + */ + public static String getWifiIpAddresses(Context context) { + ConnectivityManager cm = (ConnectivityManager) + context.getSystemService(Context.CONNECTIVITY_SERVICE); + LinkProperties prop = cm.getLinkProperties(ConnectivityManager.TYPE_WIFI); + if (prop == null) return null; + Iterator iter = prop.getAddresses().iterator(); + // If there are no entries, return null + if (!iter.hasNext()) return null; + // Concatenate all available addresses, comma separated + String addresses = ""; + while (iter.hasNext()) { + addresses += iter.next().getHostAddress(); + if (iter.hasNext()) addresses += ", "; + } + return addresses; + } } diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java index 2dd6ecdfc68..9e3b47c30db 100644 --- a/src/com/android/settings/deviceinfo/Status.java +++ b/src/com/android/settings/deviceinfo/Status.java @@ -64,6 +64,7 @@ import java.lang.ref.WeakReference; */ public class Status extends PreferenceActivity { + private static final String KEY_DATA_STATE = "data_state"; private static final String KEY_SERVICE_STATE = "service_state"; private static final String KEY_OPERATOR_NAME = "operator_name"; private static final String KEY_ROAMING_STATE = "roaming_state"; @@ -77,10 +78,26 @@ public class Status extends PreferenceActivity { private static final String KEY_SIGNAL_STRENGTH = "signal_strength"; private static final String KEY_BATTERY_STATUS = "battery_status"; private static final String KEY_BATTERY_LEVEL = "battery_level"; + private static final String KEY_WIFI_IP_ADDRESS = "wifi_ip_address"; private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; private static final String KEY_BT_ADDRESS = "bt_address"; private static final String KEY_SERIAL_NUMBER = "serial_number"; + private static final String[] PHONE_RELATED_ENTRIES = { + KEY_DATA_STATE, + KEY_SERVICE_STATE, + KEY_OPERATOR_NAME, + KEY_ROAMING_STATE, + KEY_NETWORK_TYPE, + KEY_PHONE_NUMBER, + KEY_IMEI, + KEY_IMEI_SV, + KEY_PRL_VERSION, + KEY_MIN_NUMBER, + KEY_MEID_NUMBER, + KEY_SIGNAL_STRENGTH + }; + private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; private static final int EVENT_SERVICE_STATE_CHANGED = 300; @@ -200,42 +217,49 @@ public class Status extends PreferenceActivity { mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); mUptime = findPreference("up_time"); - //NOTE "imei" is the "Device ID" since it represents the IMEI in GSM and the MEID in CDMA - if (mPhone.getPhoneName().equals("CDMA")) { - setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); - setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); - setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); - - // device is not GSM/UMTS, do not display GSM/UMTS features - // check Null in case no specified preference in overlay xml - removePreferenceFromScreen(KEY_IMEI); - removePreferenceFromScreen(KEY_IMEI_SV); + if (Utils.isWifiOnly()) { + for (String key : PHONE_RELATED_ENTRIES) { + removePreferenceFromScreen(key); + } } else { - setSummaryText(KEY_IMEI, mPhone.getDeviceId()); + // NOTE "imei" is the "Device ID" since it represents + // the IMEI in GSM and the MEID in CDMA + if (mPhone.getPhoneName().equals("CDMA")) { + setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); + setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); + setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); - setSummaryText(KEY_IMEI_SV, - ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) - .getDeviceSoftwareVersion()); + // device is not GSM/UMTS, do not display GSM/UMTS features + // check Null in case no specified preference in overlay xml + removePreferenceFromScreen(KEY_IMEI); + removePreferenceFromScreen(KEY_IMEI_SV); + } else { + setSummaryText(KEY_IMEI, mPhone.getDeviceId()); - // device is not CDMA, do not display CDMA features - // check Null in case no specified preference in overlay xml - removePreferenceFromScreen(KEY_PRL_VERSION); - removePreferenceFromScreen(KEY_MEID_NUMBER); - removePreferenceFromScreen(KEY_MIN_NUMBER); + setSummaryText(KEY_IMEI_SV, + ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) + .getDeviceSoftwareVersion()); + + // device is not CDMA, do not display CDMA features + // check Null in case no specified preference in overlay xml + removePreferenceFromScreen(KEY_PRL_VERSION); + removePreferenceFromScreen(KEY_MEID_NUMBER); + removePreferenceFromScreen(KEY_MIN_NUMBER); + } + + String rawNumber = mPhone.getLine1Number(); // may be null or empty + String formattedNumber = null; + if (!TextUtils.isEmpty(rawNumber)) { + formattedNumber = PhoneNumberUtils.formatNumber(rawNumber); + } + // If formattedNumber is null or empty, it'll display as "Unknown". + setSummaryText(KEY_PHONE_NUMBER, formattedNumber); + + mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); + mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); + mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); } - String rawNumber = mPhone.getLine1Number(); // may be null or empty - String formattedNumber = null; - if (!TextUtils.isEmpty(rawNumber)) { - formattedNumber = PhoneNumberUtils.formatNumber(rawNumber); - } - // If formattedNumber is null or empty, it'll display as "Unknown". - setSummaryText(KEY_PHONE_NUMBER, formattedNumber); - - mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); - mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); - mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); - setWifiStatus(); setBtStatus(); @@ -251,16 +275,17 @@ public class Status extends PreferenceActivity { protected void onResume() { super.onResume(); - mPhoneStateReceiver.registerIntent(); - registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - - updateSignalStrength(); - updateServiceState(mPhone.getServiceState()); - updateDataState(); - - mTelephonyManager.listen(mPhoneStateListener, - PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); + if (!Utils.isWifiOnly()) { + mPhoneStateReceiver.registerIntent(); + updateSignalStrength(); + updateServiceState(mPhone.getServiceState()); + updateDataState(); + + mTelephonyManager.listen(mPhoneStateListener, + PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); + } + registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); } @@ -268,8 +293,10 @@ public class Status extends PreferenceActivity { public void onPause() { super.onPause(); - mPhoneStateReceiver.unregisterIntent(); - mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); + if (!Utils.isWifiOnly()) { + mPhoneStateReceiver.unregisterIntent(); + mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); + } unregisterReceiver(mBatteryInfoReceiver); mHandler.removeMessages(EVENT_UPDATE_STATS); } @@ -333,7 +360,7 @@ public class Status extends PreferenceActivity { break; } - setSummaryText("data_state", display); + setSummaryText(KEY_DATA_STATE, display); } private void updateServiceState(ServiceState serviceState) { @@ -392,7 +419,7 @@ public class Status extends PreferenceActivity { + r.getString(R.string.radioInfo_display_asu)); } } - + private void setWifiStatus() { WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); @@ -401,6 +428,14 @@ public class Status extends PreferenceActivity { String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress : getString(R.string.status_unavailable)); + + Preference wifiIpAddressPref = findPreference(KEY_WIFI_IP_ADDRESS); + String ipAddress = Utils.getWifiIpAddresses(this); + if (ipAddress != null) { + wifiIpAddressPref.setSummary(ipAddress); + } else { + wifiIpAddressPref.setSummary(getString(R.string.status_unavailable)); + } } private void setBtStatus() { diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java index 23107da8f4f..97ebf43ccef 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java +++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java @@ -173,6 +173,7 @@ public class BatteryHistoryChart extends View { int mBatHigh; boolean mHaveWifi; boolean mHaveGps; + boolean mHavePhoneSignal; public BatteryHistoryChart(Context context, AttributeSet attrs) { super(context, attrs); @@ -377,7 +378,9 @@ public class BatteryHistoryChart extends View { mNumHist = lastInteresting; mHaveGps = (aggrStates&HistoryItem.STATE_GPS_ON_FLAG) != 0; mHaveWifi = (aggrStates&HistoryItem.STATE_WIFI_RUNNING_FLAG) != 0; - + if (!com.android.settings.Utils.isWifiOnly()) { + mHavePhoneSignal = true; + } if (mHistEnd <= mHistStart) mHistEnd = mHistStart+1; mTotalDurationString = Utils.formatElapsedTime(getContext(), mHistEnd - mHistStart); } @@ -421,7 +424,9 @@ public class BatteryHistoryChart extends View { if (lastWakeLock) { mWakeLockPath.lineTo(w, h-mWakeLockOffset); } - mPhoneSignalChart.finish(w); + if (mHavePhoneSignal) { + mPhoneSignalChart.finish(w); + } } @Override @@ -467,15 +472,19 @@ public class BatteryHistoryChart extends View { mWifiRunningOffset = mWakeLockOffset + barOffset; mGpsOnOffset = mWifiRunningOffset + (mHaveWifi ? barOffset : 0); mPhoneSignalOffset = mGpsOnOffset + (mHaveGps ? barOffset : 0); - mLevelOffset = mPhoneSignalOffset + barOffset + mLineWidth; - mPhoneSignalChart.init(w); + mLevelOffset = mPhoneSignalOffset + (mHavePhoneSignal ? barOffset : 0) + mLineWidth; + if (mHavePhoneSignal) { + mPhoneSignalChart.init(w); + } } else { mScreenOnOffset = mGpsOnOffset = mWifiRunningOffset = mWakeLockOffset = mLineWidth; mChargingOffset = mLineWidth*2; mPhoneSignalOffset = 0; mLevelOffset = mLineWidth*3; - mPhoneSignalChart.init(0); + if (mHavePhoneSignal) { + mPhoneSignalChart.init(0); + } } mBatLevelPath.reset(); @@ -597,7 +606,7 @@ public class BatteryHistoryChart extends View { lastWakeLock = wakeLock; } - if (mLargeMode) { + if (mLargeMode && mHavePhoneSignal) { int bin; if (((rec.states&HistoryItem.STATE_PHONE_STATE_MASK) >> HistoryItem.STATE_PHONE_STATE_SHIFT) @@ -661,8 +670,10 @@ public class BatteryHistoryChart extends View { if (!mBatCriticalPath.isEmpty()) { canvas.drawPath(mBatCriticalPath, mBatteryCriticalPaint); } - int top = height-mPhoneSignalOffset - (mLineWidth/2); - mPhoneSignalChart.draw(canvas, top, mLineWidth); + int top = height - (mHavePhoneSignal ? mPhoneSignalOffset - (mLineWidth/2) : 0); + if (mHavePhoneSignal) { + mPhoneSignalChart.draw(canvas, top, mLineWidth); + } if (!mScreenOnPath.isEmpty()) { canvas.drawPath(mScreenOnPath, mScreenOnPaint); } @@ -684,8 +695,10 @@ public class BatteryHistoryChart extends View { } if (mLargeMode) { - canvas.drawText(mPhoneSignalLabel, 0, - height - mPhoneSignalOffset - mTextDescent, mTextPaint); + if (mHavePhoneSignal) { + canvas.drawText(mPhoneSignalLabel, 0, + height - mPhoneSignalOffset - mTextDescent, mTextPaint); + } if (mHaveGps) { canvas.drawText(mGpsOnLabel, 0, height - mGpsOnOffset - mTextDescent, mTextPaint); diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 9fafc5685e0..fa626faa612 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -683,7 +683,10 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { addWiFiUsage(uSecNow); addBluetoothUsage(uSecNow); addIdleUsage(uSecNow); // Not including cellular idle power - addRadioUsage(uSecNow); + // Don't compute radio usage if it's a wifi-only device + if (!com.android.settings.Utils.isWifiOnly()) { + addRadioUsage(uSecNow); + } } private BatterySipper addEntry(String label, DrainType drainType, long time, int iconId, diff --git a/src/com/android/settings/wifi/AdvancedSettings.java b/src/com/android/settings/wifi/AdvancedSettings.java index d5d55b1a7c0..faea9f25bec 100644 --- a/src/com/android/settings/wifi/AdvancedSettings.java +++ b/src/com/android/settings/wifi/AdvancedSettings.java @@ -18,6 +18,7 @@ package com.android.settings.wifi; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.Utils; import android.app.Activity; import android.content.Context; @@ -103,16 +104,7 @@ public class AdvancedSettings extends SettingsPreferenceFragment : getActivity().getString(R.string.status_unavailable)); Preference wifiIpAddressPref = findPreference(KEY_CURRENT_IP_ADDRESS); - String ipAddress = null; - if (wifiInfo != null) { - long addr = wifiInfo.getIpAddress(); - if (addr != 0) { - // handle negative values whe first octet > 127 - if (addr < 0) addr += 0x100000000L; - ipAddress = String.format("%d.%d.%d.%d", - addr & 0xFF, (addr >> 8) & 0xFF, (addr >> 16) & 0xFF, (addr >> 24) & 0xFF); - } - } + String ipAddress = Utils.getWifiIpAddresses(getActivity()); wifiIpAddressPref.setSummary(ipAddress == null ? getActivity().getString(R.string.status_unavailable) : ipAddress); }