Status.java revision 489c7bff5c54c35e7156a99337d538e08f3aab7f
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; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiInfo; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiManager; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager; 28489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongkerimport android.os.Build; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemClock; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 36f25b3e04dbde05b025a0aaf6b1f555b8e16241b1Jeff Hamiltonimport android.telephony.PhoneNumberUtils; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties; 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.settings.R; 47ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasaniimport com.android.settings.Utils; 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.lang.ref.WeakReference; 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Display the following information 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Phone Number 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Roaming 56c38866843e966622346dc8f7b028749cac9c2198Wink Saville * # Device Id (IMEI in GSM and MEID in CDMA) 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network type 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Signal Strength 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Battery Strength : TODO 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Uptime 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Awake Time 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # XMPP/buzz/tickle status : TODO 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class Status extends PreferenceActivity { 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 67ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SERVICE_STATE = "service_state"; 68ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_OPERATOR_NAME = "operator_name"; 69ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_ROAMING_STATE = "roaming_state"; 70ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_NETWORK_TYPE = "network_type"; 71ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PHONE_NUMBER = "number"; 72ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI_SV = "imei_sv"; 73ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI = "imei"; 74ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PRL_VERSION = "prl_version"; 75ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MIN_NUMBER = "min_number"; 76ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MEID_NUMBER = "meid_number"; 77ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SIGNAL_STRENGTH = "signal_strength"; 78ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_STATUS = "battery_status"; 79ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_LEVEL = "battery_level"; 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_BT_ADDRESS = "bt_address"; 82489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker private static final String KEY_SERIAL_NUMBER = "serial_number"; 83ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SERVICE_STATE_CHANGED = 300; 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_STATS = 500; 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone mPhone = null; 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateIntentReceiver mPhoneStateReceiver; 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Resources mRes; 93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mSignalStrength; 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mUptime; 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static String sUnknown; 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryStatus; 99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryLevel; 100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler; 102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static class MyHandler extends Handler { 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private WeakReference<Status> mStatus; 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public MyHandler(Status activity) { 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mStatus = new WeakReference<Status>(activity); 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Status status = mStatus.get(); 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == null) { 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SIGNAL_STRENGTH_CHANGED: 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateSignalStrength(); 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SERVICE_STATE_CHANGED: 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ServiceState serviceState = status.mPhoneStateReceiver.getServiceState(); 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateServiceState(serviceState); 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_STATS: 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateTimes(); 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000); 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String action = intent.getAction(); 140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int level = intent.getIntExtra("level", 0); 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int scale = intent.getIntExtra("scale", 100); 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryLevel.setSummary(String.valueOf(level * 100 / scale) + "%"); 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int plugType = intent.getIntExtra("plugged", 0); 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String statusString; 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == BatteryManager.BATTERY_STATUS_CHARGING) { 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_charging); 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (plugType > 0) { 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = statusString + " " + getString( 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (plugType == BatteryManager.BATTERY_PLUGGED_AC) 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ? R.string.battery_info_status_charging_ac 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : R.string.battery_info_status_charging_usb); 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_discharging); 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_not_charging); 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_FULL) { 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_full); 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_unknown); 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryStatus.setSummary(statusString); 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 183ed47f1e497abf5ad31b1c7035ae04478e9932986John Wang Preference removablePref; 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler = new MyHandler(this); 186ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.device_info_status); 190ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryLevel = findPreference(KEY_BATTERY_LEVEL); 191ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryStatus = findPreference(KEY_BATTERY_STATUS); 192ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mRes = getResources(); 194afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (sUnknown == null) { 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sUnknown = mRes.getString(R.string.device_info_default); 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 197ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhone = PhoneFactory.getDefaultPhone(); 19918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // Note - missing in zaku build, be careful later... 200ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); 201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime = findPreference("up_time"); 202ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 203c38866843e966622346dc8f7b028749cac9c2198Wink Saville //NOTE "imei" is the "Device ID" since it represents the IMEI in GSM and the MEID in CDMA 204386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang if (mPhone.getPhoneName().equals("CDMA")) { 205ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); 206ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); 207ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); 208386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 209386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang // device is not GSM/UMTS, do not display GSM/UMTS features 210ed47f1e497abf5ad31b1c7035ae04478e9932986John Wang // check Null in case no specified preference in overlay xml 211ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani removePreferenceFromScreen(KEY_IMEI); 212ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani removePreferenceFromScreen(KEY_IMEI_SV); 213386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } else { 214ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_IMEI, mPhone.getDeviceId()); 215386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 216ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_IMEI_SV, 217386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .getDeviceSoftwareVersion()); 219386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 220386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang // device is not CDMA, do not display CDMA features 221ed47f1e497abf5ad31b1c7035ae04478e9932986John Wang // check Null in case no specified preference in overlay xml 222ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani removePreferenceFromScreen(KEY_PRL_VERSION); 223ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani removePreferenceFromScreen(KEY_MEID_NUMBER); 224ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani removePreferenceFromScreen(KEY_MIN_NUMBER); 225386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } 226386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 227b409b904d603f53bad0700555569875e61fc5231Amith Yamasani String rawNumber = mPhone.getLine1Number(); // may be null or empty 228b409b904d603f53bad0700555569875e61fc5231Amith Yamasani String formattedNumber = null; 229b409b904d603f53bad0700555569875e61fc5231Amith Yamasani if (!TextUtils.isEmpty(rawNumber)) { 230b409b904d603f53bad0700555569875e61fc5231Amith Yamasani formattedNumber = PhoneNumberUtils.formatNumber(rawNumber); 231f42d5e7e2ee7dde31e64270246c2e3b8d573d61bDavid Brown } 232b409b904d603f53bad0700555569875e61fc5231Amith Yamasani // If formattedNumber is null or empty, it'll display as "Unknown". 233b409b904d603f53bad0700555569875e61fc5231Amith Yamasani setSummaryText(KEY_PHONE_NUMBER, formattedNumber); 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setWifiStatus(); 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setBtStatus(); 241489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker 242489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker String serial = Build.SERIAL; 243489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker if (serial != null && !serial.equals("")) { 244489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker setSummaryText(KEY_SERIAL_NUMBER, serial); 245489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } else { 246489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker removePreferenceFromScreen(KEY_SERIAL_NUMBER); 247489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } 248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 249ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.registerIntent(); 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSignalStrength(); 258afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateServiceState(mPhone.getServiceState()); 259afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.unregisterIntent(); 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 273afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project unregisterReceiver(mBatteryInfoReceiver); 274afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.removeMessages(EVENT_UPDATE_STATS); 275afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 276afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 278ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * Removes the specified preference, if it exists. 279ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * @param key the key for the Preference item 280ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani */ 281ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private void removePreferenceFromScreen(String key) { 282ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani Preference pref = findPreference(key); 283ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani if (pref != null) { 284ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani getPreferenceScreen().removePreference(pref); 285ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 286ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 287ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 288ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani /** 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param preference The key for the Preference item 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param property The system property to fetch 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param alt The default value, if the property doesn't exist 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummary(String preference, String property, String alt) { 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project findPreference(preference).setSummary( 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project SystemProperties.get(property, alt)); 297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (RuntimeException e) { 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 299afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 300afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 301afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 302afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummaryText(String preference, String text) { 30318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (TextUtils.isEmpty(text)) { 30418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter text = sUnknown; 30518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 30618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // some preferences may be missing 30718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (findPreference(preference) != null) { 30818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter findPreference(preference).setSummary(text); 30918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 310afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateNetworkType() { 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Whether EDGE, UMTS, etc... 314ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummary(KEY_NETWORK_TYPE, TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, sUnknown); 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDataState() { 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 322afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connected); 324afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 325afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_suspended); 327afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 328afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 329afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connecting); 330afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_disconnected); 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("data_state", display); 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 338afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateServiceState(ServiceState serviceState) { 340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 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 ServiceState.STATE_IN_SERVICE: 345afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_in); 346afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 347afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 348afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_out); 350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_off); 353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 356ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_SERVICE_STATE, display); 357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 359ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_in)); 360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 361ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_not)); 362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 363ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_OPERATOR_NAME, serviceState.getOperatorAlphaLong()); 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateSignalStrength() { 367e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener 368e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // should probably used instead. 369ead6928894c5f63ba8751962d93987b412b4b209Wink Saville 37018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // not loaded in some versions of the code (e.g., zaku) 37118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (mSignalStrength != null) { 37218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int state = 37318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mPhoneStateReceiver.getServiceState().getState(); 37418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter Resources r = getResources(); 37518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 37618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if ((ServiceState.STATE_OUT_OF_SERVICE == state) || 37718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter (ServiceState.STATE_POWER_OFF == state)) { 37818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary("0"); 37918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 38118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm(); 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 38318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalDbm) signalDbm = 0; 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 38518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int signalAsu = mPhoneStateReceiver.getSignalStrength(); 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 38718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalAsu) signalAsu = 0; 38818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 38918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary(String.valueOf(signalDbm) + " " 39018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_dbm) + " " 39118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + String.valueOf(signalAsu) + " " 39218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_asu)); 39318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setWifiStatus() { 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference wifiMacAddressPref = findPreference(KEY_WIFI_MAC_ADDRESS); 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setBtStatus() { 407d1a04291c537e271999c7e7c5c72f1f61632aacfNick Pelly BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); 408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference btAddressPref = findPreference(KEY_BT_ADDRESS); 409afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (bluetooth == null) { 411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // device not BT capable 412afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().removePreference(btAddressPref); 413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null; 415afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project btAddressPref.setSummary(!TextUtils.isEmpty(address) ? address 416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 417afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 418afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 419afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 420afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateTimes() { 421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long at = SystemClock.uptimeMillis() / 1000; 422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long ut = SystemClock.elapsedRealtime() / 1000; 423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ut == 0) { 425afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ut = 1; 426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 427afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime.setSummary(convert(ut)); 429afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 430afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 431afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String pad(int n) { 432afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (n >= 10) { 433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return String.valueOf(n); 434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return "0" + String.valueOf(n); 436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 437afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 438afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String convert(long t) { 440afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int s = (int)(t % 60); 441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int m = (int)((t / 60) % 60); 442afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int h = (int)((t / 3600)); 443afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 444afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return h + ":" + pad(m) + ":" + pad(s); 445afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 446afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 447