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
This commit is contained in:
Amith Yamasani
2011-02-25 14:35:20 -08:00
parent 489c7bff5c
commit c06d4c48a9
8 changed files with 163 additions and 73 deletions

View File

@@ -90,6 +90,11 @@
android:title="@string/status_imei_sv"
android:summary="@string/device_info_not_available"
android:persistent="false" />
<Preference android:key="wifi_ip_address"
style="?android:attr/preferenceInformationStyle"
android:title="@string/wifi_advanced_ip_address_title"
android:summary="@string/device_info_not_available"
android:persistent="false" />
<Preference android:key="wifi_mac_address"
style="?android:attr/preferenceInformationStyle"
android:title="@string/status_wifi_mac_address"

View File

@@ -87,6 +87,12 @@ public class DateTimeSettings extends SettingsPreferenceFragment
mAutoTimePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME);
mAutoTimePref.setChecked(autoTimeEnabled);
mAutoTimeZonePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME_ZONE);
// Override auto-timezone if it's a wifi-only device.
// TODO: Remove this when auto-timezone is implemented based on wifi-location.
if (Utils.isWifiOnly()) {
getPreferenceScreen().removePreference(mAutoTimeZonePref);
autoTimeZoneEnabled = false;
}
mAutoTimeZonePref.setChecked(autoTimeZoneEnabled);
mTimePref = findPreference("time");
@@ -125,7 +131,6 @@ public class DateTimeSettings extends SettingsPreferenceFragment
mTimeZone.setEnabled(!autoTimeZoneEnabled);
}
@Override
public void onResume() {
super.onResume();

View File

@@ -39,6 +39,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DeviceInfoSettings extends SettingsPreferenceFragment {
private static final String TAG = "DeviceInfoSettings";
private static final String KEY_CONTAINER = "container";
@@ -49,6 +50,11 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment {
private static final String KEY_COPYRIGHT = "copyright";
private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings";
private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal";
private static final String KEY_KERNEL_VERSION = "kernel_version";
private static final String KEY_BUILD_NUMBER = "build_number";
private static final String KEY_DEVICE_MODEL = "device_model";
private static final String KEY_BASEBAND_VERSION = "baseband_version";
private static final String KEY_FIRMWARE_VERSION = "firmware_version";
long[] mHits = new long[3];
@@ -69,17 +75,22 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment {
getPreferenceScreen().removePreference(findPreference("system_tutorial"));
}
setStringSummary("firmware_version", Build.VERSION.RELEASE);
findPreference("firmware_version").setEnabled(true);
setValueSummary("baseband_version", "gsm.version.baseband");
setStringSummary("device_model", Build.MODEL);
setStringSummary("build_number", Build.DISPLAY);
findPreference("kernel_version").setSummary(getFormattedKernelVersion());
setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);
findPreference(KEY_FIRMWARE_VERSION).setEnabled(true);
setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());
// Remove Safety information preference if PROPERTY_URL_SAFETYLEGAL is not set
removePreferenceIfPropertyMissing(getPreferenceScreen(), "safetylegal",
PROPERTY_URL_SAFETYLEGAL);
// Remove Baseband version if wifi-only device
if (Utils.isWifiOnly()) {
getPreferenceScreen().removePreference(findPreference(KEY_BASEBAND_VERSION));
}
/*
* Settings is a generic app and should not contain any device-specific
* info.
@@ -107,7 +118,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment {
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getKey().equals("firmware_version")) {
if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {

View File

@@ -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<InetAddress> 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;
}
}

View File

@@ -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,7 +217,13 @@ 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 (Utils.isWifiOnly()) {
for (String key : PHONE_RELATED_ENTRIES) {
removePreferenceFromScreen(key);
}
} else {
// 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());
@@ -235,6 +258,7 @@ public class Status extends PreferenceActivity {
mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);
mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED);
}
setWifiStatus();
setBtStatus();
@@ -251,8 +275,8 @@ public class Status extends PreferenceActivity {
protected void onResume() {
super.onResume();
if (!Utils.isWifiOnly()) {
mPhoneStateReceiver.registerIntent();
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
updateSignalStrength();
updateServiceState(mPhone.getServiceState());
@@ -260,7 +284,8 @@ public class Status extends PreferenceActivity {
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();
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) {
@@ -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() {

View File

@@ -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,8 +424,10 @@ public class BatteryHistoryChart extends View {
if (lastWakeLock) {
mWakeLockPath.lineTo(w, h-mWakeLockOffset);
}
if (mHavePhoneSignal) {
mPhoneSignalChart.finish(w);
}
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
@@ -467,16 +472,20 @@ public class BatteryHistoryChart extends View {
mWifiRunningOffset = mWakeLockOffset + barOffset;
mGpsOnOffset = mWifiRunningOffset + (mHaveWifi ? barOffset : 0);
mPhoneSignalOffset = mGpsOnOffset + (mHaveGps ? barOffset : 0);
mLevelOffset = mPhoneSignalOffset + barOffset + mLineWidth;
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;
if (mHavePhoneSignal) {
mPhoneSignalChart.init(0);
}
}
mBatLevelPath.reset();
mBatGoodPath.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);
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) {
if (mHavePhoneSignal) {
canvas.drawText(mPhoneSignalLabel, 0,
height - mPhoneSignalOffset - mTextDescent, mTextPaint);
}
if (mHaveGps) {
canvas.drawText(mGpsOnLabel, 0,
height - mGpsOnOffset - mTextDescent, mTextPaint);

View File

@@ -683,8 +683,11 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable {
addWiFiUsage(uSecNow);
addBluetoothUsage(uSecNow);
addIdleUsage(uSecNow); // Not including cellular idle power
// 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,
double power) {

View File

@@ -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);
}