Status.java revision 9627a8ea151c1f27e5e9f34592c7b34fea3101c3
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings.deviceinfo; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19d63c0112251ab4e4e977545368dd703d875012a4Nick Pellyimport android.bluetooth.BluetoothAdapter; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.BroadcastReceiver; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.IntentFilter; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 257c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.munimport android.net.ConnectivityManager; 267c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.munimport android.net.NetworkInfo; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiInfo; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiManager; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager; 30489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongkerimport android.os.Build; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemClock; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 369627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasaniimport android.os.UserHandle; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 397c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.munimport android.preference.PreferenceScreen; 40f25b3e04dbde05b025a0aaf6b1f555b8e16241b1Jeff Hamiltonimport android.telephony.PhoneNumberUtils; 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 475543404ae0ec9635b59d37fa01074ea598d539ebWink Savilleimport com.android.internal.telephony.PhoneConstants; 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver; 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties; 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.settings.R; 52ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasaniimport com.android.settings.Utils; 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.lang.ref.WeakReference; 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Display the following information 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Phone Number 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Roaming 61c38866843e966622346dc8f7b028749cac9c2198Wink Saville * # Device Id (IMEI in GSM and MEID in CDMA) 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network type 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Signal Strength 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Battery Strength : TODO 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Uptime 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Awake Time 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # XMPP/buzz/tickle status : TODO 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class Status extends PreferenceActivity { 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 72c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani private static final String KEY_DATA_STATE = "data_state"; 73ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SERVICE_STATE = "service_state"; 74ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_OPERATOR_NAME = "operator_name"; 75ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_ROAMING_STATE = "roaming_state"; 76ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_NETWORK_TYPE = "network_type"; 77ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PHONE_NUMBER = "number"; 78ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI_SV = "imei_sv"; 79ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI = "imei"; 80ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PRL_VERSION = "prl_version"; 81ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MIN_NUMBER = "min_number"; 82ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MEID_NUMBER = "meid_number"; 83ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SIGNAL_STRENGTH = "signal_strength"; 84ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_STATUS = "battery_status"; 85ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_LEVEL = "battery_level"; 866822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani private static final String KEY_IP_ADDRESS = "wifi_ip_address"; 87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_BT_ADDRESS = "bt_address"; 89489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker private static final String KEY_SERIAL_NUMBER = "serial_number"; 90d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang private static final String KEY_ICC_ID = "icc_id"; 917c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; 92c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani private static final String[] PHONE_RELATED_ENTRIES = { 93c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_DATA_STATE, 94c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_SERVICE_STATE, 95c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_OPERATOR_NAME, 96c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_ROAMING_STATE, 97c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_NETWORK_TYPE, 98c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_PHONE_NUMBER, 99c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_IMEI, 100c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_IMEI_SV, 101c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_PRL_VERSION, 102c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_MIN_NUMBER, 103c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_MEID_NUMBER, 104d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang KEY_SIGNAL_STRENGTH, 105d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang KEY_ICC_ID 106c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani }; 107c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SERVICE_STATE_CHANGED = 300; 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_STATS = 500; 112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone mPhone = null; 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateIntentReceiver mPhoneStateReceiver; 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Resources mRes; 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mSignalStrength; 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mUptime; 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 12041e70e67fa218858a38a4105b3fbadcd4f82c846Gustavo Waku private String sUnknown; 121d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryStatus; 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryLevel; 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler; 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static class MyHandler extends Handler { 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private WeakReference<Status> mStatus; 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public MyHandler(Status activity) { 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mStatus = new WeakReference<Status>(activity); 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Status status = mStatus.get(); 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == null) { 138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SIGNAL_STRENGTH_CHANGED: 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateSignalStrength(); 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SERVICE_STATE_CHANGED: 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ServiceState serviceState = status.mPhoneStateReceiver.getServiceState(); 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateServiceState(serviceState); 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_STATS: 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateTimes(); 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000); 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { 160d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String action = intent.getAction(); 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 165a4379d6b38e568fcb60831d6f2fa349ba20f9b82Amith Yamasani mBatteryLevel.setSummary(Utils.getBatteryPercentage(intent)); 166a4379d6b38e568fcb60831d6f2fa349ba20f9b82Amith Yamasani mBatteryStatus.setSummary(Utils.getBatteryStatus(getResources(), intent)); 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 178d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 182ed47f1e497abf5ad31b1c7035ae04478e9932986John Wang Preference removablePref; 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler = new MyHandler(this); 185ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.device_info_status); 189ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryLevel = findPreference(KEY_BATTERY_LEVEL); 190ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryStatus = findPreference(KEY_BATTERY_STATUS); 191ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mRes = getResources(); 19341e70e67fa218858a38a4105b3fbadcd4f82c846Gustavo Waku sUnknown = mRes.getString(R.string.device_info_default); 1949627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (UserHandle.myUserId() == UserHandle.USER_OWNER) { 1959627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani mPhone = PhoneFactory.getDefaultPhone(); 1969627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani } 19718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // Note - missing in zaku build, be careful later... 198ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); 199afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime = findPreference("up_time"); 200ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 2019627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone == null || Utils.isWifiOnly(getApplicationContext())) { 202c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani for (String key : PHONE_RELATED_ENTRIES) { 203c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(key); 204c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 205386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } else { 206c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // NOTE "imei" is the "Device ID" since it represents 207c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // the IMEI in GSM and the MEID in CDMA 208c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (mPhone.getPhoneName().equals("CDMA")) { 209c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); 210c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); 211079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen if (getResources().getBoolean(R.bool.config_msid_enable)) { 212079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number); 213079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen } 214c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); 215c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_IMEI_SV); 216d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 2175543404ae0ec9635b59d37fa01074ea598d539ebWink Saville if (mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) { 218d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // Show ICC ID and IMEI for LTE device 219d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang setSummaryText(KEY_ICC_ID, mPhone.getIccSerialNumber()); 220d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang setSummaryText(KEY_IMEI, mPhone.getImei()); 221d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang } else { 222d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // device is not GSM/UMTS, do not display GSM/UMTS features 223d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // check Null in case no specified preference in overlay xml 224d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_IMEI); 225d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_ICC_ID); 226d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang } 227c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } else { 228c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_IMEI, mPhone.getDeviceId()); 229c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 230c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_IMEI_SV, 231c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) 232c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani .getDeviceSoftwareVersion()); 233c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 234c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // device is not CDMA, do not display CDMA features 235c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // check Null in case no specified preference in overlay xml 236c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_PRL_VERSION); 237c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_MEID_NUMBER); 238c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_MIN_NUMBER); 239d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_ICC_ID); 240c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 241386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 242c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani String rawNumber = mPhone.getLine1Number(); // may be null or empty 243c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani String formattedNumber = null; 244c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (!TextUtils.isEmpty(rawNumber)) { 245c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani formattedNumber = PhoneNumberUtils.formatNumber(rawNumber); 246c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 247c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // If formattedNumber is null or empty, it'll display as "Unknown". 248c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_PHONE_NUMBER, formattedNumber); 249386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 250c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); 251c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); 252c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); 253f42d5e7e2ee7dde31e64270246c2e3b8d573d61bDavid Brown } 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2557c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun setWimaxStatus(); 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setWifiStatus(); 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setBtStatus(); 2586822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani setIpAddressStatus(); 259489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker 260489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker String serial = Build.SERIAL; 261489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker if (serial != null && !serial.equals("")) { 262489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker setSummaryText(KEY_SERIAL_NUMBER, serial); 263489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } else { 264489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker removePreferenceFromScreen(KEY_SERIAL_NUMBER); 265489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 267ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2729627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) { 273c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.registerIntent(); 274c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 275c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateSignalStrength(); 276c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateServiceState(mPhone.getServiceState()); 277c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateDataState(); 278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 279c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mTelephonyManager.listen(mPhoneStateListener, 280c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 281c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 282c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 283afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); 284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 285d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2909627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) { 291c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.unregisterIntent(); 292c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 293c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project unregisterReceiver(mBatteryInfoReceiver); 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.removeMessages(EVENT_UPDATE_STATS); 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 299ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * Removes the specified preference, if it exists. 300ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * @param key the key for the Preference item 301ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani */ 302ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private void removePreferenceFromScreen(String key) { 303ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani Preference pref = findPreference(key); 304ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani if (pref != null) { 305ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani getPreferenceScreen().removePreference(pref); 306ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 307ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 308ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 309ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani /** 310afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param preference The key for the Preference item 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param property The system property to fetch 312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param alt The default value, if the property doesn't exist 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummary(String preference, String property, String alt) { 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project findPreference(preference).setSummary( 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project SystemProperties.get(property, alt)); 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (RuntimeException e) { 319d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 322afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummaryText(String preference, String text) { 32418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (TextUtils.isEmpty(text)) { 32518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter text = sUnknown; 32618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 32718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // some preferences may be missing 32818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (findPreference(preference) != null) { 32918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter findPreference(preference).setSummary(text); 33018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 332d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateNetworkType() { 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Whether EDGE, UMTS, etc... 335e37f427cbb9b382fbdf64420d2592be19e627544Robert Greenwalt setSummaryText(KEY_NETWORK_TYPE, mTelephonyManager.getNetworkTypeName() + 336e37f427cbb9b382fbdf64420d2592be19e627544Robert Greenwalt ":" + mTelephonyManager.getNetworkType()); 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 338d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDataState() { 340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 341afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 342afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 343afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 344afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 345afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connected); 346afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 347afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 348afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_suspended); 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connecting); 352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_disconnected); 355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 357d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 358c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_DATA_STATE, display); 359afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 361afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateServiceState(ServiceState serviceState) { 362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 364d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_IN_SERVICE: 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_in); 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_out); 372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_off); 375afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 377d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 378ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_SERVICE_STATE, display); 379d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 381ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_in)); 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 383ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_not)); 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 385ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_OPERATOR_NAME, serviceState.getOperatorAlphaLong()); 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 387d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateSignalStrength() { 389e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener 390e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // should probably used instead. 391ead6928894c5f63ba8751962d93987b412b4b209Wink Saville 39218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // not loaded in some versions of the code (e.g., zaku) 39318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (mSignalStrength != null) { 39418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int state = 39518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mPhoneStateReceiver.getServiceState().getState(); 39618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter Resources r = getResources(); 39718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 39818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if ((ServiceState.STATE_OUT_OF_SERVICE == state) || 39918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter (ServiceState.STATE_POWER_OFF == state)) { 40018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary("0"); 40118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 40318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm(); 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 40518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalDbm) signalDbm = 0; 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 407882c74a6799d24c766e3db81a316743bbe11e0beWink Saville int signalAsu = mPhoneStateReceiver.getSignalStrengthLevelAsu(); 408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 40918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalAsu) signalAsu = 0; 41018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 41118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary(String.valueOf(signalDbm) + " " 41218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_dbm) + " " 41318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + String.valueOf(signalAsu) + " " 41418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_asu)); 41518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 417c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 4187c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun private void setWimaxStatus() { 4197c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 4207c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIMAX); 4217c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun 4227c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun if (ni == null) { 4237c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun PreferenceScreen root = getPreferenceScreen(); 4247c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun Preference ps = (Preference) findPreference(KEY_WIMAX_MAC_ADDRESS); 4257c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun if (ps != null) root.removePreference(ps); 4267c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } else { 4277c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun Preference wimaxMacAddressPref = findPreference(KEY_WIMAX_MAC_ADDRESS); 4287c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun String macAddress = SystemProperties.get("net.wimax.mac.address", 4297c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun getString(R.string.status_unavailable)); 4307c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun wimaxMacAddressPref.setSummary(macAddress); 4317c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 4327c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setWifiStatus() { 434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 437afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference wifiMacAddressPref = findPreference(KEY_WIFI_MAC_ADDRESS); 4386822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani 439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); 440d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 4426822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani } 443c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 4446822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani private void setIpAddressStatus() { 4456822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani Preference ipAddressPref = findPreference(KEY_IP_ADDRESS); 4466822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani String ipAddress = Utils.getDefaultIpAddresses(this); 447c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (ipAddress != null) { 4486822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani ipAddressPref.setSummary(ipAddress); 449c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } else { 4506822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani ipAddressPref.setSummary(getString(R.string.status_unavailable)); 451c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 452afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 453afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 454afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setBtStatus() { 455d1a04291c537e271999c7e7c5c72f1f61632aacfNick Pelly BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); 456afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference btAddressPref = findPreference(KEY_BT_ADDRESS); 457afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 458afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (bluetooth == null) { 459afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // device not BT capable 460afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().removePreference(btAddressPref); 461afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 462afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null; 463afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project btAddressPref.setSummary(!TextUtils.isEmpty(address) ? address 464afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 465afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 466afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 467afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 468afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateTimes() { 469afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long at = SystemClock.uptimeMillis() / 1000; 470afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long ut = SystemClock.elapsedRealtime() / 1000; 471afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 472afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ut == 0) { 473afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ut = 1; 474afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 475afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 476afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime.setSummary(convert(ut)); 477afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 478d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 479afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String pad(int n) { 480afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (n >= 10) { 481afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return String.valueOf(n); 482afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 483afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return "0" + String.valueOf(n); 484afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 485afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 486afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 487afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String convert(long t) { 488afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int s = (int)(t % 60); 489afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int m = (int)((t / 60) % 60); 490afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int h = (int)((t / 3600)); 491afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 492afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return h + ":" + pad(m) + ":" + pad(s); 493afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 494afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 495