Status.java revision b7715323308674cfd0902615124192442159449e
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; 21b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.content.ClipboardManager; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.IntentFilter; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 267c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.munimport android.net.ConnectivityManager; 277c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.munimport android.net.NetworkInfo; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiInfo; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiManager; 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; 40bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hambyimport android.telephony.CellBroadcastMessage; 41f25b3e04dbde05b025a0aaf6b1f555b8e16241b1Jeff Hamiltonimport android.telephony.PhoneNumberUtils; 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 46b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.util.Log; 47b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.view.View; 48b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.widget.AdapterView; 49b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.widget.ListAdapter; 50b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.widget.ListView; 51b7715323308674cfd0902615124192442159449eDaniel Sandlerimport android.widget.Toast; 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 545543404ae0ec9635b59d37fa01074ea598d539ebWink Savilleimport com.android.internal.telephony.PhoneConstants; 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver; 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.settings.R; 58ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasaniimport com.android.settings.Utils; 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.lang.ref.WeakReference; 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Display the following information 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Phone Number 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Roaming 67c38866843e966622346dc8f7b028749cac9c2198Wink Saville * # Device Id (IMEI in GSM and MEID in CDMA) 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network type 69bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby * # Operator info (area info cell broadcast for Brazil) 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Signal Strength 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Battery Strength : TODO 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Uptime 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Awake Time 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # XMPP/buzz/tickle status : TODO 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class Status extends PreferenceActivity { 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 79c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani private static final String KEY_DATA_STATE = "data_state"; 80ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SERVICE_STATE = "service_state"; 81ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_OPERATOR_NAME = "operator_name"; 82ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_ROAMING_STATE = "roaming_state"; 83ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_NETWORK_TYPE = "network_type"; 84bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby private static final String KEY_LATEST_AREA_INFO = "latest_area_info"; 85ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PHONE_NUMBER = "number"; 86ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI_SV = "imei_sv"; 87ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_IMEI = "imei"; 88ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_PRL_VERSION = "prl_version"; 89ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MIN_NUMBER = "min_number"; 90ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_MEID_NUMBER = "meid_number"; 91ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_SIGNAL_STRENGTH = "signal_strength"; 92ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_STATUS = "battery_status"; 93ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private static final String KEY_BATTERY_LEVEL = "battery_level"; 946822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani private static final String KEY_IP_ADDRESS = "wifi_ip_address"; 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_BT_ADDRESS = "bt_address"; 97489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker private static final String KEY_SERIAL_NUMBER = "serial_number"; 98d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang private static final String KEY_ICC_ID = "icc_id"; 997c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; 100c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani private static final String[] PHONE_RELATED_ENTRIES = { 101c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_DATA_STATE, 102c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_SERVICE_STATE, 103c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_OPERATOR_NAME, 104c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_ROAMING_STATE, 105c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_NETWORK_TYPE, 106bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby KEY_LATEST_AREA_INFO, 107c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_PHONE_NUMBER, 108c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_IMEI, 109c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_IMEI_SV, 110c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_PRL_VERSION, 111c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_MIN_NUMBER, 112c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani KEY_MEID_NUMBER, 113d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang KEY_SIGNAL_STRENGTH, 114d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang KEY_ICC_ID 115c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani }; 116c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 117bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby static final String CB_AREA_INFO_RECEIVED_ACTION = 118bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby "android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; 119bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 120bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby static final String GET_LATEST_CB_AREA_INFO_ACTION = 121bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby "android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO"; 122bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 123bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby // Require the sender to have this permission to prevent third-party spoofing. 124bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby static final String CB_AREA_INFO_SENDER_PERMISSION = 125bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby "android.permission.RECEIVE_EMERGENCY_BROADCAST"; 126bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SERVICE_STATE_CHANGED = 300; 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_STATS = 500; 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone mPhone = null; 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateIntentReceiver mPhoneStateReceiver; 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Resources mRes; 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mSignalStrength; 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mUptime; 138bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby private boolean mShowLatestAreaInfo; 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 14041e70e67fa218858a38a4105b3fbadcd4f82c846Gustavo Waku private String sUnknown; 141d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryStatus; 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryLevel; 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler; 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static class MyHandler extends Handler { 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private WeakReference<Status> mStatus; 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public MyHandler(Status activity) { 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mStatus = new WeakReference<Status>(activity); 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Status status = mStatus.get(); 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == null) { 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SIGNAL_STRENGTH_CHANGED: 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateSignalStrength(); 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SERVICE_STATE_CHANGED: 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ServiceState serviceState = status.mPhoneStateReceiver.getServiceState(); 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateServiceState(serviceState); 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_STATS: 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateTimes(); 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000); 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { 180d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String action = intent.getAction(); 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 185a4379d6b38e568fcb60831d6f2fa349ba20f9b82Amith Yamasani mBatteryLevel.setSummary(Utils.getBatteryPercentage(intent)); 186a4379d6b38e568fcb60831d6f2fa349ba20f9b82Amith Yamasani mBatteryStatus.setSummary(Utils.getBatteryStatus(getResources(), intent)); 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 190afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 194afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 197afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 198d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 199bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby private BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() { 200bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby @Override 201bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby public void onReceive(Context context, Intent intent) { 202bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby String action = intent.getAction(); 203bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (CB_AREA_INFO_RECEIVED_ACTION.equals(action)) { 204bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby Bundle extras = intent.getExtras(); 205bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (extras == null) { 206bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby return; 207bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 208bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby CellBroadcastMessage cbMessage = (CellBroadcastMessage) extras.get("message"); 209bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (cbMessage != null && cbMessage.getServiceCategory() == 50) { 210bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby String latestAreaInfo = cbMessage.getMessageBody(); 211bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby updateAreaInfo(latestAreaInfo); 212bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 213bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 214bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 215bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby }; 216bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler = new MyHandler(this); 222ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.device_info_status); 226ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryLevel = findPreference(KEY_BATTERY_LEVEL); 227ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mBatteryStatus = findPreference(KEY_BATTERY_STATUS); 228ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mRes = getResources(); 23041e70e67fa218858a38a4105b3fbadcd4f82c846Gustavo Waku sUnknown = mRes.getString(R.string.device_info_default); 2319627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (UserHandle.myUserId() == UserHandle.USER_OWNER) { 2329627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani mPhone = PhoneFactory.getDefaultPhone(); 2339627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani } 23418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // Note - missing in zaku build, be careful later... 235ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH); 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime = findPreference("up_time"); 237ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 2389627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone == null || Utils.isWifiOnly(getApplicationContext())) { 239c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani for (String key : PHONE_RELATED_ENTRIES) { 240c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(key); 241c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 242386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } else { 243c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // NOTE "imei" is the "Device ID" since it represents 244c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // the IMEI in GSM and the MEID in CDMA 245c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (mPhone.getPhoneName().equals("CDMA")) { 246c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); 247c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); 248079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen if (getResources().getBoolean(R.bool.config_msid_enable)) { 249079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number); 250079e30cd2a09388ba9ad2149a66de86be4f3a7acMarco Nelissen } 251c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); 252c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_IMEI_SV); 253d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 2545543404ae0ec9635b59d37fa01074ea598d539ebWink Saville if (mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) { 255d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // Show ICC ID and IMEI for LTE device 256d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang setSummaryText(KEY_ICC_ID, mPhone.getIccSerialNumber()); 257d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang setSummaryText(KEY_IMEI, mPhone.getImei()); 258d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang } else { 259d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // device is not GSM/UMTS, do not display GSM/UMTS features 260d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang // check Null in case no specified preference in overlay xml 261d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_IMEI); 262d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_ICC_ID); 263d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang } 264c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } else { 265c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_IMEI, mPhone.getDeviceId()); 266c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 267c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_IMEI_SV, 268c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) 269c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani .getDeviceSoftwareVersion()); 270c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 271c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // device is not CDMA, do not display CDMA features 272c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // check Null in case no specified preference in overlay xml 273c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_PRL_VERSION); 274c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_MEID_NUMBER); 275c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani removePreferenceFromScreen(KEY_MIN_NUMBER); 276d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang removePreferenceFromScreen(KEY_ICC_ID); 277bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 278bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby // only show area info when SIM country is Brazil 279bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if ("br".equals(mTelephonyManager.getSimCountryIso())) { 280bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby mShowLatestAreaInfo = true; 281bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 282c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 283386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 284c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani String rawNumber = mPhone.getLine1Number(); // may be null or empty 285c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani String formattedNumber = null; 286c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (!TextUtils.isEmpty(rawNumber)) { 287c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani formattedNumber = PhoneNumberUtils.formatNumber(rawNumber); 288c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 289c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani // If formattedNumber is null or empty, it'll display as "Unknown". 290c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_PHONE_NUMBER, formattedNumber); 291386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 292c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); 293c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); 294c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); 295bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 296bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (!mShowLatestAreaInfo) { 297bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby removePreferenceFromScreen(KEY_LATEST_AREA_INFO); 298bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 299f42d5e7e2ee7dde31e64270246c2e3b8d573d61bDavid Brown } 300afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3017c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun setWimaxStatus(); 302afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setWifiStatus(); 303afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setBtStatus(); 3046822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani setIpAddressStatus(); 305489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker 306489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker String serial = Build.SERIAL; 307489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker if (serial != null && !serial.equals("")) { 308489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker setSummaryText(KEY_SERIAL_NUMBER, serial); 309489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } else { 310489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker removePreferenceFromScreen(KEY_SERIAL_NUMBER); 311489c7bff5c54c35e7156a99337d538e08f3aab7fDoug Zongker } 312b7715323308674cfd0902615124192442159449eDaniel Sandler 313b7715323308674cfd0902615124192442159449eDaniel Sandler // Make every pref on this screen copy its data to the clipboard on longpress. 314b7715323308674cfd0902615124192442159449eDaniel Sandler // Super convenient for capturing the IMEI, MAC addr, serial, etc. 315b7715323308674cfd0902615124192442159449eDaniel Sandler getListView().setOnItemLongClickListener( 316b7715323308674cfd0902615124192442159449eDaniel Sandler new AdapterView.OnItemLongClickListener() { 317b7715323308674cfd0902615124192442159449eDaniel Sandler @Override 318b7715323308674cfd0902615124192442159449eDaniel Sandler public boolean onItemLongClick(AdapterView<?> parent, View view, 319b7715323308674cfd0902615124192442159449eDaniel Sandler int position, long id) { 320b7715323308674cfd0902615124192442159449eDaniel Sandler ListAdapter listAdapter = (ListAdapter) parent.getAdapter(); 321b7715323308674cfd0902615124192442159449eDaniel Sandler Preference pref = (Preference) listAdapter.getItem(position); 322b7715323308674cfd0902615124192442159449eDaniel Sandler 323b7715323308674cfd0902615124192442159449eDaniel Sandler ClipboardManager cm = (ClipboardManager) 324b7715323308674cfd0902615124192442159449eDaniel Sandler getSystemService(Context.CLIPBOARD_SERVICE); 325b7715323308674cfd0902615124192442159449eDaniel Sandler cm.setText(pref.getSummary()); 326b7715323308674cfd0902615124192442159449eDaniel Sandler Toast.makeText( 327b7715323308674cfd0902615124192442159449eDaniel Sandler Status.this, 328b7715323308674cfd0902615124192442159449eDaniel Sandler com.android.internal.R.string.text_copied, 329b7715323308674cfd0902615124192442159449eDaniel Sandler Toast.LENGTH_SHORT).show(); 330b7715323308674cfd0902615124192442159449eDaniel Sandler return true; 331b7715323308674cfd0902615124192442159449eDaniel Sandler } 332b7715323308674cfd0902615124192442159449eDaniel Sandler }); 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 334ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 338afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3399627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) { 340c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.registerIntent(); 341c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 342c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateSignalStrength(); 343c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateServiceState(mPhone.getServiceState()); 344c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani updateDataState(); 345c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mTelephonyManager.listen(mPhoneStateListener, 346bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 347bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (mShowLatestAreaInfo) { 348bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby registerReceiver(mAreaInfoReceiver, new IntentFilter(CB_AREA_INFO_RECEIVED_ACTION), 349bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby CB_AREA_INFO_SENDER_PERMISSION, null); 350bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby // Ask CellBroadcastReceiver to broadcast the latest area info received 351bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby Intent getLatestIntent = new Intent(GET_LATEST_CB_AREA_INFO_ACTION); 352bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby sendBroadcastAsUser(getLatestIntent, UserHandle.ALL, 353bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby CB_AREA_INFO_SENDER_PERMISSION); 354bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 355c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 356c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); 358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 359d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 361afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3649627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) { 365c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mPhoneStateReceiver.unregisterIntent(); 366c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 367c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 368bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (mShowLatestAreaInfo) { 369bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby unregisterReceiver(mAreaInfoReceiver); 370bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project unregisterReceiver(mBatteryInfoReceiver); 372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.removeMessages(EVENT_UPDATE_STATS); 373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 375afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 376ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * Removes the specified preference, if it exists. 377ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani * @param key the key for the Preference item 378ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani */ 379ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani private void removePreferenceFromScreen(String key) { 380ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani Preference pref = findPreference(key); 381ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani if (pref != null) { 382ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani getPreferenceScreen().removePreference(pref); 383ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 384ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani } 385ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani 386ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani /** 387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param preference The key for the Preference item 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param property The system property to fetch 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param alt The default value, if the property doesn't exist 390afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummary(String preference, String property, String alt) { 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project findPreference(preference).setSummary( 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project SystemProperties.get(property, alt)); 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (RuntimeException e) { 396d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummaryText(String preference, String text) { 40118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (TextUtils.isEmpty(text)) { 40218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter text = sUnknown; 40318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 40418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // some preferences may be missing 40518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (findPreference(preference) != null) { 40618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter findPreference(preference).setSummary(text); 40718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 409d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateNetworkType() { 411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Whether EDGE, UMTS, etc... 4121fd3544c55eb707f894888da9aaf307a867db806Akira Oshimi String networktype = null; 4131fd3544c55eb707f894888da9aaf307a867db806Akira Oshimi if (TelephonyManager.NETWORK_TYPE_UNKNOWN != mTelephonyManager.getNetworkType()) { 4141fd3544c55eb707f894888da9aaf307a867db806Akira Oshimi networktype = mTelephonyManager.getNetworkTypeName(); 4151fd3544c55eb707f894888da9aaf307a867db806Akira Oshimi } 4161fd3544c55eb707f894888da9aaf307a867db806Akira Oshimi setSummaryText(KEY_NETWORK_TYPE, networktype); 417afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 418d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 419afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDataState() { 420afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 425afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connected); 426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 427afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_suspended); 429afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 430afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 431afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connecting); 432afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_disconnected); 435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 437d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 438c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani setSummaryText(KEY_DATA_STATE, display); 439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 440afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateServiceState(ServiceState serviceState) { 442afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 443afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 444d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 445afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 446afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_IN_SERVICE: 447afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_in); 448afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 449afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 450afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 451afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_out); 452afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 453afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 454afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_off); 455afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 456afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 457d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 458ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_SERVICE_STATE, display); 459d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 460afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 461ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_in)); 462afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 463ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_ROAMING_STATE, mRes.getString(R.string.radioInfo_roaming_not)); 464afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 465ffe813c380d7609fb94c65337b0964952f19c130Amith Yamasani setSummaryText(KEY_OPERATOR_NAME, serviceState.getOperatorAlphaLong()); 466afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 467d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 468bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby private void updateAreaInfo(String areaInfo) { 469bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby if (areaInfo != null) { 470bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby setSummaryText(KEY_LATEST_AREA_INFO, areaInfo); 471bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 472bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby } 473bc5d9271a9d36ecf07ac35e1635f36679074de6fJake Hamby 474afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateSignalStrength() { 475e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener 476e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // should probably used instead. 477ead6928894c5f63ba8751962d93987b412b4b209Wink Saville 47818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter // not loaded in some versions of the code (e.g., zaku) 47918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (mSignalStrength != null) { 48018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int state = 48118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mPhoneStateReceiver.getServiceState().getState(); 48218f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter Resources r = getResources(); 48318f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 48418f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if ((ServiceState.STATE_OUT_OF_SERVICE == state) || 48518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter (ServiceState.STATE_POWER_OFF == state)) { 48618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary("0"); 48718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 488afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 48918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm(); 490afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 49118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalDbm) signalDbm = 0; 492afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 493882c74a6799d24c766e3db81a316743bbe11e0beWink Saville int signalAsu = mPhoneStateReceiver.getSignalStrengthLevelAsu(); 494afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 49518f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter if (-1 == signalAsu) signalAsu = 0; 49618f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter 49718f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter mSignalStrength.setSummary(String.valueOf(signalDbm) + " " 49818f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_dbm) + " " 49918f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + String.valueOf(signalAsu) + " " 50018f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter + r.getString(R.string.radioInfo_display_asu)); 50118f3afb9cdfc617e778e2807ee58da50f251790eMike Ritter } 502afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 503c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 5047c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun private void setWimaxStatus() { 5057c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 5067c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIMAX); 5077c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun 5087c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun if (ni == null) { 5097c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun PreferenceScreen root = getPreferenceScreen(); 5107c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun Preference ps = (Preference) findPreference(KEY_WIMAX_MAC_ADDRESS); 5117c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun if (ps != null) root.removePreference(ps); 5127c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } else { 5137c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun Preference wimaxMacAddressPref = findPreference(KEY_WIMAX_MAC_ADDRESS); 5147c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun String macAddress = SystemProperties.get("net.wimax.mac.address", 5157c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun getString(R.string.status_unavailable)); 5167c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun wimaxMacAddressPref.setSummary(macAddress); 5177c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 5187c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 519afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setWifiStatus() { 520afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 521afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 522afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 523afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference wifiMacAddressPref = findPreference(KEY_WIFI_MAC_ADDRESS); 5246822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani 525afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); 526d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 527afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 5286822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani } 529c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 5306822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani private void setIpAddressStatus() { 5316822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani Preference ipAddressPref = findPreference(KEY_IP_ADDRESS); 5326822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani String ipAddress = Utils.getDefaultIpAddresses(this); 533c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani if (ipAddress != null) { 5346822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani ipAddressPref.setSummary(ipAddress); 535c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } else { 5366822b749bbd525abcf492e4f5a236d77a910331aAmith Yamasani ipAddressPref.setSummary(getString(R.string.status_unavailable)); 537c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 538afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 539afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 540afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setBtStatus() { 541d1a04291c537e271999c7e7c5c72f1f61632aacfNick Pelly BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); 542afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference btAddressPref = findPreference(KEY_BT_ADDRESS); 543afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 544afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (bluetooth == null) { 545afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // device not BT capable 546afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().removePreference(btAddressPref); 547afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 548afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null; 549afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project btAddressPref.setSummary(!TextUtils.isEmpty(address) ? address 550afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 551afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 552afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 553afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 554afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateTimes() { 555afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long at = SystemClock.uptimeMillis() / 1000; 556afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long ut = SystemClock.elapsedRealtime() / 1000; 557afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 558afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ut == 0) { 559afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ut = 1; 560afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 561afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 562afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime.setSummary(convert(ut)); 563afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 564d7b2dccbe60a02965186d28f0b671ef1c419a2a8John Wang 565afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String pad(int n) { 566afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (n >= 10) { 567afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return String.valueOf(n); 568afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 569afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return "0" + String.valueOf(n); 570afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 571afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 572afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 573afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String convert(long t) { 574afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int s = (int)(t % 60); 575afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int m = (int)((t / 60) % 60); 576afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int h = (int)((t / 3600)); 577afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 578afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return h + ":" + pad(m) + ":" + pad(s); 579afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 580afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 581