1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2006 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; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.Activity; 20e272c2078ba1626e1f14c57257d9516bd107aceaNathan Haroldimport android.app.AlertDialog; 21e272c2078ba1626e1f14c57257d9516bd107aceaNathan Haroldimport android.app.Dialog; 22cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiakimport android.app.QueuedWork; 23fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wangimport android.content.ComponentName; 24586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wangimport android.content.Context; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 26a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalinkimport android.content.pm.PackageManager; 27a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalinkimport android.content.pm.ResolveInfo; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 29cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.graphics.Typeface; 309302986035f46d2868c23db6349fd04b543eb676Jeff Sharkeyimport android.net.TrafficStats; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.Uri; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.AsyncResult; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message; 36586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wangimport android.telephony.CarrierConfigManager; 3779bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Savilleimport android.telephony.CellInfo; 38cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellInfoCdma; 39cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellInfoGsm; 40cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellInfoLte; 41cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellInfoWcdma; 42cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellIdentityCdma; 43cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellIdentityGsm; 44cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellIdentityLte; 45cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellIdentityWcdma; 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.CellLocation; 47cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellSignalStrengthCdma; 48cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellSignalStrengthGsm; 49cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellSignalStrengthLte; 50cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.CellSignalStrengthWcdma; 514f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Savilleimport android.telephony.DataConnectionRealTimeInfo; 5239b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.telephony.NeighboringCellInfo; 532b77d7460ccebd97826529f186596df14050f0aeNathan Haroldimport android.telephony.PreciseCallState; 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 562b77d7460ccebd97826529f186596df14050f0aeNathan Haroldimport android.telephony.SignalStrength; 57cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport android.telephony.SubscriptionManager; 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 59534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jshimport android.telephony.cdma.CdmaCellLocation; 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.gsm.GsmCellLocation; 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log; 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.Menu; 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.MenuItem; 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View; 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View.OnClickListener; 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.AdapterView; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.ArrayAdapter; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Button; 692b77d7460ccebd97826529f186596df14050f0aeNathan Haroldimport android.widget.CompoundButton; 702b77d7460ccebd97826529f186596df14050f0aeNathan Haroldimport android.widget.CompoundButton.OnCheckedChangeListener; 7139b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.widget.EditText; 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Spinner; 732b77d7460ccebd97826529f186596df14050f0aeNathan Haroldimport android.widget.Switch; 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.TextView; 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 7639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.ims.ImsConfig; 7739b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.ims.ImsException; 7839b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.ims.ImsManager; 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 805543404ae0ec9635b59d37fa01074ea598d539ebWink Savilleimport com.android.internal.telephony.PhoneConstants; 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 82cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Haroldimport com.android.internal.telephony.RILConstants; 83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties; 84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.IOException; 8639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport java.net.HttpURLConnection; 8739b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport java.net.URL; 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.net.UnknownHostException; 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.ArrayList; 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.List; 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class RadioInfo extends Activity { 932b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final String TAG = "RadioInfo"; 942b77d7460ccebd97826529f186596df14050f0aeNathan Harold 952b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final String[] mPreferredNetworkLabels = { 962b77d7460ccebd97826529f186596df14050f0aeNathan Harold "WCDMA preferred", 972b77d7460ccebd97826529f186596df14050f0aeNathan Harold "GSM only", 982b77d7460ccebd97826529f186596df14050f0aeNathan Harold "WCDMA only", 992b77d7460ccebd97826529f186596df14050f0aeNathan Harold "GSM auto (PRL)", 1002b77d7460ccebd97826529f186596df14050f0aeNathan Harold "CDMA auto (PRL)", 1012b77d7460ccebd97826529f186596df14050f0aeNathan Harold "CDMA only", 1022b77d7460ccebd97826529f186596df14050f0aeNathan Harold "EvDo only", 1032b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Global auto (PRL)", 1042b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/CDMA auto (PRL)", 1052b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/UMTS auto (PRL)", 1062b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/CDMA/UMTS auto (PRL)", 1072b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE only", 1082b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/WCDMA", 1092b77d7460ccebd97826529f186596df14050f0aeNathan Harold "TD-SCDMA only", 1102b77d7460ccebd97826529f186596df14050f0aeNathan Harold "TD-SCDMA/WCDMA", 1112b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/TD-SCDMA", 1122b77d7460ccebd97826529f186596df14050f0aeNathan Harold "TD-SCDMA/GSM", 1132b77d7460ccebd97826529f186596df14050f0aeNathan Harold "TD-SCDMA/UMTS", 1142b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/TD-SCDMA/WCDMA", 1152b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE/TD-SCDMA/UMTS", 1162b77d7460ccebd97826529f186596df14050f0aeNathan Harold "TD-SCDMA/CDMA/UMTS", 1172b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Global/TD-SCDMA", 1182b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Unknown" 1192b77d7460ccebd97826529f186596df14050f0aeNathan Harold }; 1202b77d7460ccebd97826529f186596df14050f0aeNathan Harold 1212b77d7460ccebd97826529f186596df14050f0aeNathan Harold 1222b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final int CELL_INFO_LIST_RATE_DISABLED = Integer.MAX_VALUE; 1232b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final int CELL_INFO_LIST_RATE_MAX = 0; 1242b77d7460ccebd97826529f186596df14050f0aeNathan Harold 12512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 12612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private static final int IMS_VOLTE_PROVISIONED_CONFIG_ID = 12712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold ImsConfig.ConfigConstants.VLT_SETTING_ENABLED; 12812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 12912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private static final int IMS_VT_PROVISIONED_CONFIG_ID = 13012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold ImsConfig.ConfigConstants.LVC_SETTING_ENABLED; 13112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 13212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private static final int IMS_WFC_PROVISIONED_CONFIG_ID = 13312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED; 13412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 135586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang private static final int EAB_PROVISIONED_CONFIG_ID = 136586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang ImsConfig.ConfigConstants.EAB_SETTING_ENABLED; 137586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1382b77d7460ccebd97826529f186596df14050f0aeNathan Harold //Values in must match mCellInfoRefreshRates 1392b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final String[] mCellInfoRefreshRateLabels = { 1402b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Disabled", 1412b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Immediate", 1422b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Min 5s", 1432b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Min 10s", 1442b77d7460ccebd97826529f186596df14050f0aeNathan Harold "Min 60s" 1452b77d7460ccebd97826529f186596df14050f0aeNathan Harold }; 1462b77d7460ccebd97826529f186596df14050f0aeNathan Harold 1472b77d7460ccebd97826529f186596df14050f0aeNathan Harold //Values in seconds, must match mCellInfoRefreshRateLabels 1482b77d7460ccebd97826529f186596df14050f0aeNathan Harold private static final int mCellInfoRefreshRates[] = { 1492b77d7460ccebd97826529f186596df14050f0aeNathan Harold CELL_INFO_LIST_RATE_DISABLED, 1502b77d7460ccebd97826529f186596df14050f0aeNathan Harold CELL_INFO_LIST_RATE_MAX, 1512b77d7460ccebd97826529f186596df14050f0aeNathan Harold 5000, 1522b77d7460ccebd97826529f186596df14050f0aeNathan Harold 10000, 1532b77d7460ccebd97826529f186596df14050f0aeNathan Harold 60000 1542b77d7460ccebd97826529f186596df14050f0aeNathan Harold }; 1552b77d7460ccebd97826529f186596df14050f0aeNathan Harold 1562b77d7460ccebd97826529f186596df14050f0aeNathan Harold private void log(String s) { 1572b77d7460ccebd97826529f186596df14050f0aeNathan Harold Log.d(TAG, s); 1582b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 159342101a0729a30587dc4fa79b5f017634bd985c0johnwang 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_CFI_CHANGED = 302; 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_QUERY_PREFERRED_TYPE_DONE = 1000; 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SET_PREFERRED_TYPE_DONE = 1001; 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_QUERY_SMSC_DONE = 1005; 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_SMSC_DONE = 1006; 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_SELECT_BAND = 0; 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_ADN = 1; 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_FDN = 2; 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_SDN = 3; 171e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold private static final int MENU_ITEM_GET_IMS_STATUS = 4; 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_TOGGLE_DATA = 5; 173a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 174c38866843e966622346dc8f7b028749cac9c2198Wink Saville private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView number; 1769053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang private TextView mSubscriberId; 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView callState; 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView operatorName; 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView roamingState; 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView gsmState; 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView gprsState; 1822b77d7460ccebd97826529f186596df14050f0aeNathan Harold private TextView voiceNetwork; 1832b77d7460ccebd97826529f186596df14050f0aeNathan Harold private TextView dataNetwork; 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView dBm; 185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mMwi; 186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mCfi; 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mLocation; 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mNeighboringCids; 18979bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville private TextView mCellInfo; 1904f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville private TextView mDcRtInfoTv; 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView sent; 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView received; 193cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private TextView mPingHostnameV4; 194cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private TextView mPingHostnameV6; 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mHttpClientTest; 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView dnsCheckState; 197afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditText smsc; 1982b77d7460ccebd97826529f186596df14050f0aeNathan Harold private Switch radioPowerOnSwitch; 1992b77d7460ccebd97826529f186596df14050f0aeNathan Harold private Button cellInfoRefreshRateButton; 200afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button dnsCheckToggleButton; 201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button pingTestButton; 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button updateSmscButton; 203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button refreshSmscButton; 204a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink private Button oemInfoButton; 205fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang private Button carrierProvisioningButton; 206fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang private Button triggercarrierProvisioningButton; 20712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private Switch imsVolteProvisionedSwitch; 20812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private Switch imsVtProvisionedSwitch; 20912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private Switch imsWfcProvisionedSwitch; 210586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang private Switch eabProvisionedSwitch; 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Spinner preferredNetworkType; 2122b77d7460ccebd97826529f186596df14050f0aeNathan Harold private Spinner cellInfoRefreshRateSpinner; 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 215cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private ImsManager mImsManager = null; 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone phone = null; 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 218cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private String mPingHostnameResultV4; 219cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private String mPingHostnameResultV6; 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mHttpClientTestResult; 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mMwiValue = false; 222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mCfiValue = false; 223cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 224cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private List<CellInfo> mCellInfoResult = null; 225cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private CellLocation mCellLocationResult = null; 226cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private List<NeighboringCellInfo> mNeighboringCellResult = null; 227cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 228cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private int mPreferredNetworkTypeResult; 2292b77d7460ccebd97826529f186596df14050f0aeNathan Harold private int mCellInfoRefreshRateIndex; 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2312b77d7460ccebd97826529f186596df14050f0aeNathan Harold private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataActivity(int direction) { 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats2(); 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 2442b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onCallStateChanged(int state, String incomingNumber) { 2452b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateNetworkType(); 2462b77d7460ccebd97826529f186596df14050f0aeNathan Harold updatePhoneState(state); 2472b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 2482b77d7460ccebd97826529f186596df14050f0aeNathan Harold 2492b77d7460ccebd97826529f186596df14050f0aeNathan Harold @Override 2502b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onPreciseCallStateChanged(PreciseCallState preciseState) { 2512b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateNetworkType(); 2522b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 2532b77d7460ccebd97826529f186596df14050f0aeNathan Harold 2542b77d7460ccebd97826529f186596df14050f0aeNathan Harold @Override 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCellLocationChanged(CellLocation location) { 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateLocation(location); 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 258afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 259afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onMessageWaitingIndicatorChanged(boolean mwi) { 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwiValue = mwi; 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting(); 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCallForwardingIndicatorChanged(boolean cfi) { 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfiValue = cfi; 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect(); 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 27079bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville 27179bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville @Override 27279bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville public void onCellInfoChanged(List<CellInfo> arrayCi) { 273bf4712895a570ce360db57f775b47c858f1d71b2Wink Saville log("onCellInfoChanged: arrayCi=" + arrayCi); 274cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellInfoResult = arrayCi; 275cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateCellInfo(mCellInfoResult); 27679bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville } 2774f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville 2784f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville @Override 2794f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville public void onDataConnectionRealTimeInfoChanged(DataConnectionRealTimeInfo dcRtInfo) { 2804f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville log("onDataConnectionRealTimeInfoChanged: dcRtInfo=" + dcRtInfo); 2814f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville updateDcRtInfoTv(dcRtInfo); 2824f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville } 2832b77d7460ccebd97826529f186596df14050f0aeNathan Harold 2842b77d7460ccebd97826529f186596df14050f0aeNathan Harold @Override 2852b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onSignalStrengthsChanged(SignalStrength signalStrength) { 2862b77d7460ccebd97826529f186596df14050f0aeNathan Harold log("onSignalStrengthChanged: SignalStrength=" +signalStrength); 2872b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateSignalStrength(signalStrength); 2882b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 2892b77d7460ccebd97826529f186596df14050f0aeNathan Harold 2902b77d7460ccebd97826529f186596df14050f0aeNathan Harold @Override 2912b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onServiceStateChanged(ServiceState serviceState) { 2922b77d7460ccebd97826529f186596df14050f0aeNathan Harold log("onServiceStateChanged: ServiceState=" + serviceState); 2932b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateServiceState(serviceState); 2942b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateRadioPowerState(); 2952b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateNetworkType(); 29612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold updateImsProvisionedState(); 2972b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 299afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 300cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private void updatePreferredNetworkType(int type) { 301cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (type >= mPreferredNetworkLabels.length || type < 0) { 302cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold log("EVENT_QUERY_PREFERRED_TYPE_DONE: unknown " + 303cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold "type=" + type); 304cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold type = mPreferredNetworkLabels.length - 1; //set to Unknown 305cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 306cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPreferredNetworkTypeResult = type; 307cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 308cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true); 309cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 310cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler = new Handler() { 312cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold @Override 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project AsyncResult ar; 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_QUERY_PREFERRED_TYPE_DONE: 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 318cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (ar.exception == null && ar.result != null) { 319cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updatePreferredNetworkType(((int[])ar.result)[0]); 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 321cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //In case of an exception, we will set this to unknown 322cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updatePreferredNetworkType(mPreferredNetworkLabels.length-1); 323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 324afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 325afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SET_PREFERRED_TYPE_DONE: 326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 327afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 328ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold log("Set preferred network type failed."); 329afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 330afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_QUERY_SMSC_DONE: 332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc.setText("refresh error"); 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 33621dd407c10bb1bade10233e8468ea6729bcf71efjsh smsc.setText((String)ar.result); 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 338afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_SMSC_DONE: 340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setEnabled(true); 341afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 342afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 343afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc.setText("update error"); 344afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 345afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 346afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 347cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold super.handleMessage(msg); 348afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCreate(Bundle icicle) { 356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 357b54cb2d18cf2e8d5dd45781079f0b4ad27649b25fionaxu if (!android.os.Process.myUserHandle().isSystem()) { 358b54cb2d18cf2e8d5dd45781079f0b4ad27649b25fionaxu Log.e(TAG, "Not run from system user, don't do anything."); 359b54cb2d18cf2e8d5dd45781079f0b4ad27649b25fionaxu finish(); 360b54cb2d18cf2e8d5dd45781079f0b4ad27649b25fionaxu return; 361b54cb2d18cf2e8d5dd45781079f0b4ad27649b25fionaxu } 362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setContentView(R.layout.radio_info); 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 365cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold log("Started onCreate"); 366cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone = PhoneFactory.getDefaultPhone(); 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 370cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //TODO: Need to update this if the default phoneId changes? 371cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold // Better to have an instance per phone? 372cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mImsManager = ImsManager.getInstance(getApplicationContext(), 373cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold SubscriptionManager.getDefaultVoicePhoneId()); 374cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 3759053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang mDeviceId = (TextView) findViewById(R.id.imei); 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project number = (TextView) findViewById(R.id.number); 3779053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang mSubscriberId = (TextView) findViewById(R.id.imsi); 378afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project callState = (TextView) findViewById(R.id.call); 379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project operatorName = (TextView) findViewById(R.id.operator); 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState = (TextView) findViewById(R.id.roaming); 381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gsmState = (TextView) findViewById(R.id.gsm); 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gprsState = (TextView) findViewById(R.id.gprs); 3832b77d7460ccebd97826529f186596df14050f0aeNathan Harold voiceNetwork = (TextView) findViewById(R.id.voice_network); 3842b77d7460ccebd97826529f186596df14050f0aeNathan Harold dataNetwork = (TextView) findViewById(R.id.data_network); 385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dBm = (TextView) findViewById(R.id.dbm); 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwi = (TextView) findViewById(R.id.mwi); 387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfi = (TextView) findViewById(R.id.cfi); 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLocation = (TextView) findViewById(R.id.location); 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mNeighboringCids = (TextView) findViewById(R.id.neighboring); 39079bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville mCellInfo = (TextView) findViewById(R.id.cellinfo); 391cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellInfo.setTypeface(Typeface.MONOSPACE); 3924f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville mDcRtInfoTv = (TextView) findViewById(R.id.dcrtinfo); 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sent = (TextView) findViewById(R.id.sent); 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project received = (TextView) findViewById(R.id.received); 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc = (EditText) findViewById(R.id.smsc); 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckState = (TextView) findViewById(R.id.dnsCheckState); 398cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV4 = (TextView) findViewById(R.id.pingHostnameV4); 399cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV6 = (TextView) findViewById(R.id.pingHostnameV6); 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest = (TextView) findViewById(R.id.httpClientTest); 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType); 403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project android.R.layout.simple_spinner_item, mPreferredNetworkLabels); 405342101a0729a30587dc4fa79b5f017634bd985c0johnwang adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType.setAdapter(adapter); 407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 4082b77d7460ccebd97826529f186596df14050f0aeNathan Harold cellInfoRefreshRateSpinner = (Spinner) findViewById(R.id.cell_info_rate_select); 4092b77d7460ccebd97826529f186596df14050f0aeNathan Harold ArrayAdapter<String> cellInfoAdapter = new ArrayAdapter<String>(this, 4102b77d7460ccebd97826529f186596df14050f0aeNathan Harold android.R.layout.simple_spinner_item, mCellInfoRefreshRateLabels); 4112b77d7460ccebd97826529f186596df14050f0aeNathan Harold cellInfoAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 4122b77d7460ccebd97826529f186596df14050f0aeNathan Harold cellInfoRefreshRateSpinner.setAdapter(cellInfoAdapter); 413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 41412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVolteProvisionedSwitch = (Switch) findViewById(R.id.volte_provisioned_switch); 41512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVtProvisionedSwitch = (Switch) findViewById(R.id.vt_provisioned_switch); 41612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsWfcProvisionedSwitch = (Switch) findViewById(R.id.wfc_provisioned_switch); 41769439b5e47d10dc2f1efa5289b0e23dfed5c6579Meng Wang eabProvisionedSwitch = (Switch) findViewById(R.id.eab_provisioned_switch); 418bf4712895a570ce360db57f775b47c858f1d71b2Wink Saville 4192b77d7460ccebd97826529f186596df14050f0aeNathan Harold radioPowerOnSwitch = (Switch) findViewById(R.id.radio_power); 420426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville 421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingTestButton = (Button) findViewById(R.id.ping_test); 422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingTestButton.setOnClickListener(mPingButtonHandler); 423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton = (Button) findViewById(R.id.update_smsc); 424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setOnClickListener(mUpdateSmscButtonHandler); 425afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmscButton = (Button) findViewById(R.id.refresh_smsc); 426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmscButton.setOnClickListener(mRefreshSmscButtonHandler); 427afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle); 428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler); 429fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang carrierProvisioningButton = (Button) findViewById(R.id.carrier_provisioning); 430fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang carrierProvisioningButton.setOnClickListener(mCarrierProvisioningButtonHandler); 431fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang triggercarrierProvisioningButton = (Button) findViewById(R.id.trigger_carrier_provisioning); 432fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang triggercarrierProvisioningButton.setOnClickListener( 433fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang mTriggerCarrierProvisioningButtonHandler); 434342101a0729a30587dc4fa79b5f017634bd985c0johnwang 435a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton = (Button) findViewById(R.id.oem_info); 436a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton.setOnClickListener(mOemInfoButtonHandler); 437a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink PackageManager pm = getPackageManager(); 438a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent oemInfoIntent = new Intent("com.android.settings.OEM_RADIO_INFO"); 439a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink List<ResolveInfo> oemInfoIntentList = pm.queryIntentActivities(oemInfoIntent, 0); 440a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink if (oemInfoIntentList.size() == 0) { 441a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton.setEnabled(false); 442a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } 443a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 444ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold mCellInfoRefreshRateIndex = 0; //disabled 445cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPreferredNetworkTypeResult = mPreferredNetworkLabels.length - 1; //Unknown 446cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 447cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with TelephonyManager call 448afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.getPreferredNetworkType( 449afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE)); 45079bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville 451cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold restoreFromBundle(icicle); 452afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 453afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 454afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 455afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 456afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 457afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 458cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold log("Started onResume"); 459cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 460afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting(); 461afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect(); 462afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 463afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats2(); 4642b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateRadioPowerState(); 46512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold updateImsProvisionedState(); 466afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateProperties(); 467afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDnsCheckState(); 4682b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateNetworkType(); 469afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 470cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateNeighboringCids(mNeighboringCellResult); 471cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateLocation(mCellLocationResult); 472cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateCellInfo(mCellInfoResult); 473cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 474cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV4.setText(mPingHostnameResultV4); 475cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV6.setText(mPingHostnameResultV6); 476cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHttpClientTest.setText(mHttpClientTestResult); 477afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 4782b77d7460ccebd97826529f186596df14050f0aeNathan Harold cellInfoRefreshRateSpinner.setOnItemSelectedListener(mCellInfoRefreshRateHandler); 479ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold //set selection after registering listener to force update 480ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold cellInfoRefreshRateSpinner.setSelection(mCellInfoRefreshRateIndex); 481ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold 482ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold //set selection before registering to prevent update 483ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold preferredNetworkType.setSelection(mPreferredNetworkTypeResult, true); 4842b77d7460ccebd97826529f186596df14050f0aeNathan Harold preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler); 485ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold 4862b77d7460ccebd97826529f186596df14050f0aeNathan Harold radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener); 48712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener); 48812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener); 48912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener); 490586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener); 4912b77d7460ccebd97826529f186596df14050f0aeNathan Harold 492afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, 4932b77d7460ccebd97826529f186596df14050f0aeNathan Harold PhoneStateListener.LISTEN_CALL_STATE 4942b77d7460ccebd97826529f186596df14050f0aeNathan Harold //b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE 4952b77d7460ccebd97826529f186596df14050f0aeNathan Harold // | PhoneStateListener.LISTEN_PRECISE_CALL_STATE 4962b77d7460ccebd97826529f186596df14050f0aeNathan Harold | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE 497afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_DATA_ACTIVITY 498afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_CELL_LOCATION 499afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR 50079bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville | PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR 5014f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville | PhoneStateListener.LISTEN_CELL_INFO 5022b77d7460ccebd97826529f186596df14050f0aeNathan Harold | PhoneStateListener.LISTEN_SERVICE_STATE 5032b77d7460ccebd97826529f186596df14050f0aeNathan Harold | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS 5044f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville | PhoneStateListener.LISTEN_DATA_CONNECTION_REAL_TIME_INFO); 505ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold 506ed38afafd874f922b6eadbb8535197ae1c6e0e8cNathan Harold smsc.clearFocus(); 507afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 508afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 509afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 510cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold protected void onPause() { 511afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 512afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 513bf4712895a570ce360db57f775b47c858f1d71b2Wink Saville log("onPause: unregister phone & data intents"); 514afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 515afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 5165cce06b2e88aa0f20741ebe7f880580dad65307aSooraj Sasindran mTelephonyManager.setCellInfoListRate(CELL_INFO_LIST_RATE_DISABLED); 517afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 518afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 519cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private void restoreFromBundle(Bundle b) { 520e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold if(b == null) { 521cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return; 522cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 523cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 524cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = b.getString("mPingHostnameResultV4",""); 525cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV6 = b.getString("mPingHostnameResultV6",""); 526cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHttpClientTestResult = b.getString("mHttpClientTestResult",""); 527cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 528cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV4.setText(mPingHostnameResultV4); 529cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV6.setText(mPingHostnameResultV6); 530cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHttpClientTest.setText(mHttpClientTestResult); 531cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 5322b77d7460ccebd97826529f186596df14050f0aeNathan Harold mPreferredNetworkTypeResult = b.getInt("mPreferredNetworkTypeResult", 5332b77d7460ccebd97826529f186596df14050f0aeNathan Harold mPreferredNetworkLabels.length - 1); 5342b77d7460ccebd97826529f186596df14050f0aeNathan Harold 5352b77d7460ccebd97826529f186596df14050f0aeNathan Harold mCellInfoRefreshRateIndex = b.getInt("mCellInfoRefreshRateIndex", 0); 536cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 537cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 538cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold @Override 539cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold protected void onSaveInstanceState(Bundle outState) { 540cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold outState.putString("mPingHostnameResultV4", mPingHostnameResultV4); 541cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold outState.putString("mPingHostnameResultV6", mPingHostnameResultV6); 542cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold outState.putString("mHttpClientTestResult", mHttpClientTestResult); 5432b77d7460ccebd97826529f186596df14050f0aeNathan Harold 544cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold outState.putInt("mPreferredNetworkTypeResult", mPreferredNetworkTypeResult); 5452b77d7460ccebd97826529f186596df14050f0aeNathan Harold outState.putInt("mCellInfoRefreshRateIndex", mCellInfoRefreshRateIndex); 5462b77d7460ccebd97826529f186596df14050f0aeNathan Harold 547cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 548cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 549afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 550afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onCreateOptionsMenu(Menu menu) { 551c38866843e966622346dc8f7b028749cac9c2198Wink Saville menu.add(0, MENU_ITEM_SELECT_BAND, 0, R.string.radio_info_band_mode_label) 552c38866843e966622346dc8f7b028749cac9c2198Wink Saville .setOnMenuItemClickListener(mSelectBandCallback) 553afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .setAlphabeticShortcut('b'); 554afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_ADN, 0, 555afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewADN).setOnMenuItemClickListener(mViewADNCallback); 556afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_FDN, 0, 557afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback); 558afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_SDN, 0, 559afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback); 560e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold menu.add(1, MENU_ITEM_GET_IMS_STATUS, 561e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 0, R.string.radioInfo_menu_getIMS).setOnMenuItemClickListener(mGetImsStatus); 562afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_TOGGLE_DATA, 5632b77d7460ccebd97826529f186596df14050f0aeNathan Harold 0, R.string.radio_info_data_connection_disable).setOnMenuItemClickListener(mToggleData); 564afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 565afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 566afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 567afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 568c38866843e966622346dc8f7b028749cac9c2198Wink Saville public boolean onPrepareOptionsMenu(Menu menu) { 569afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Get the TOGGLE DATA menu item in the right state. 570afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project MenuItem item = menu.findItem(MENU_ITEM_TOGGLE_DATA); 571afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 572afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean visible = true; 573afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 574afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 575afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 576afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 5772b77d7460ccebd97826529f186596df14050f0aeNathan Harold item.setTitle(R.string.radio_info_data_connection_disable); 578afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 579afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 5802b77d7460ccebd97826529f186596df14050f0aeNathan Harold item.setTitle(R.string.radio_info_data_connection_enable); 581afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 582afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 583afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project visible = false; 584afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 585afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 586afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project item.setVisible(visible); 587afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 588afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 589afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 590afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDnsCheckState() { 591cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 5925304c7e38f89f7616bd4c834a14b4d764356d19bMike Lockwood dnsCheckState.setText(phone.isDnsCheckDisabled() ? 593afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "0.0.0.0 allowed" :"0.0.0.0 not allowed"); 594afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 595e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville 596afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 5972b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateSignalStrength(SignalStrength signalStrength) { 598afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 599afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 6002b77d7460ccebd97826529f186596df14050f0aeNathan Harold int signalDbm = signalStrength.getDbm(); 601afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 6022b77d7460ccebd97826529f186596df14050f0aeNathan Harold int signalAsu = signalStrength.getAsuLevel(); 603afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 604afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (-1 == signalAsu) signalAsu = 0; 605afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 606afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dBm.setText(String.valueOf(signalDbm) + " " 607afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + r.getString(R.string.radioInfo_display_dbm) + " " 608afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + String.valueOf(signalAsu) + " " 609afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + r.getString(R.string.radioInfo_display_asu)); 610afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 611afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 612afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateLocation(CellLocation location) { 613534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh Resources r = getResources(); 614c38866843e966622346dc8f7b028749cac9c2198Wink Saville if (location instanceof GsmCellLocation) { 615c38866843e966622346dc8f7b028749cac9c2198Wink Saville GsmCellLocation loc = (GsmCellLocation)location; 616534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lac = loc.getLac(); 617534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int cid = loc.getCid(); 618534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText(r.getString(R.string.radioInfo_lac) + " = " 619534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lac == -1) ? "unknown" : Integer.toHexString(lac)) 620534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 621534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + r.getString(R.string.radioInfo_cid) + " = " 622534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((cid == -1) ? "unknown" : Integer.toHexString(cid))); 623534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh } else if (location instanceof CdmaCellLocation) { 624534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh CdmaCellLocation loc = (CdmaCellLocation)location; 625534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int bid = loc.getBaseStationId(); 626534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int sid = loc.getSystemId(); 627534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int nid = loc.getNetworkId(); 628534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lat = loc.getBaseStationLatitude(); 629534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lon = loc.getBaseStationLongitude(); 630534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText("BID = " 631534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((bid == -1) ? "unknown" : Integer.toHexString(bid)) 632534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 633534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "SID = " 634534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((sid == -1) ? "unknown" : Integer.toHexString(sid)) 635534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 636534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "NID = " 637534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((nid == -1) ? "unknown" : Integer.toHexString(nid)) 638534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "\n" 639534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "LAT = " 640534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lat == -1) ? "unknown" : Integer.toHexString(lat)) 641534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 642534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "LONG = " 643534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lon == -1) ? "unknown" : Integer.toHexString(lon))); 644534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh } else { 645534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText("unknown"); 646c38866843e966622346dc8f7b028749cac9c2198Wink Saville } 647afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 648afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 649afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 650afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 651cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final void updateNeighboringCids(List<NeighboringCellInfo> cids) { 652f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang StringBuilder sb = new StringBuilder(); 653f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang 654afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (cids != null) { 655e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold if (cids.isEmpty()) { 656f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append("no neighboring cells"); 657afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 658afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (NeighboringCellInfo cell : cids) { 659f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append(cell.toString()).append(" "); 660afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 661afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 662afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 663f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append("unknown"); 664afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 665f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang mNeighboringCids.setText(sb.toString()); 666afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 667afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 668cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String getCellInfoDisplayString(int i) { 669cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return (i != Integer.MAX_VALUE) ? Integer.toString(i) : ""; 670cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 671cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 672cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String getCellInfoDisplayString(long i) { 673cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return (i != Long.MAX_VALUE) ? Long.toString(i) : ""; 674cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 675cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 676cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String buildCdmaInfoString(CellInfoCdma ci) { 677cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellIdentityCdma cidCdma = ci.getCellIdentity(); 678cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellSignalStrengthCdma ssCdma = ci.getCellSignalStrength(); 679cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 680cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return String.format("%-3.3s %-5.5s %-5.5s %-5.5s %-6.6s %-6.6s %-6.6s %-6.6s %-5.5s", 681cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold ci.isRegistered() ? "S " : " ", 682cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidCdma.getSystemId()), 683cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidCdma.getNetworkId()), 684cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidCdma.getBasestationId()), 685cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssCdma.getCdmaDbm()), 686cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssCdma.getCdmaEcio()), 687cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssCdma.getEvdoDbm()), 688cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssCdma.getEvdoEcio()), 689cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssCdma.getEvdoSnr())); 690cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 691cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 692cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String buildGsmInfoString(CellInfoGsm ci) { 693cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellIdentityGsm cidGsm = ci.getCellIdentity(); 694cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellSignalStrengthGsm ssGsm = ci.getCellSignalStrength(); 695cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 6962b77d7460ccebd97826529f186596df14050f0aeNathan Harold return String.format("%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-6.6s %-4.4s %-4.4s\n", 697cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold ci.isRegistered() ? "S " : " ", 698cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidGsm.getMcc()), 699cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidGsm.getMnc()), 700cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidGsm.getLac()), 701cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidGsm.getCid()), 7022b77d7460ccebd97826529f186596df14050f0aeNathan Harold getCellInfoDisplayString(cidGsm.getArfcn()), 7032b77d7460ccebd97826529f186596df14050f0aeNathan Harold getCellInfoDisplayString(cidGsm.getBsic()), 704cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssGsm.getDbm())); 705cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 706cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 707cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String buildLteInfoString(CellInfoLte ci) { 708cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellIdentityLte cidLte = ci.getCellIdentity(); 709cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellSignalStrengthLte ssLte = ci.getCellSignalStrength(); 710cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 711cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return String.format( 7122b77d7460ccebd97826529f186596df14050f0aeNathan Harold "%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-3.3s %-6.6s %-4.4s %-4.4s %-2.2s\n", 713cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold ci.isRegistered() ? "S " : " ", 714cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidLte.getMcc()), 715cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidLte.getMnc()), 716cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidLte.getTac()), 717cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidLte.getCi()), 718cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidLte.getPci()), 7192b77d7460ccebd97826529f186596df14050f0aeNathan Harold getCellInfoDisplayString(cidLte.getEarfcn()), 720cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssLte.getDbm()), 721cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssLte.getRsrq()), 722cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssLte.getTimingAdvance())); 723cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 724cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 725cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String buildWcdmaInfoString(CellInfoWcdma ci) { 726cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellIdentityWcdma cidWcdma = ci.getCellIdentity(); 727cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold CellSignalStrengthWcdma ssWcdma = ci.getCellSignalStrength(); 728cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 7292b77d7460ccebd97826529f186596df14050f0aeNathan Harold return String.format("%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-6.6s %-3.3s %-4.4s\n", 730cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold ci.isRegistered() ? "S " : " ", 731cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidWcdma.getMcc()), 732cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidWcdma.getMnc()), 733cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidWcdma.getLac()), 734cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidWcdma.getCid()), 7352b77d7460ccebd97826529f186596df14050f0aeNathan Harold getCellInfoDisplayString(cidWcdma.getUarfcn()), 736cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(cidWcdma.getPsc()), 737cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold getCellInfoDisplayString(ssWcdma.getDbm())); 738cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 739cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 740cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final String buildCellInfoString(List<CellInfo> arrayCi) { 741cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold String value = new String(); 742cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold StringBuilder cdmaCells = new StringBuilder(), 743cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold gsmCells = new StringBuilder(), 744cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold lteCells = new StringBuilder(), 745cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold wcdmaCells = new StringBuilder(); 746cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 747cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (arrayCi != null) { 748cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold for (CellInfo ci : arrayCi) { 749cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 750cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (ci instanceof CellInfoLte) { 751cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold lteCells.append(buildLteInfoString((CellInfoLte) ci)); 752cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else if (ci instanceof CellInfoWcdma) { 753cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold wcdmaCells.append(buildWcdmaInfoString((CellInfoWcdma) ci)); 754cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else if (ci instanceof CellInfoGsm) { 755cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold gsmCells.append(buildGsmInfoString((CellInfoGsm) ci)); 756cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else if (ci instanceof CellInfoCdma) { 757cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold cdmaCells.append(buildCdmaInfoString((CellInfoCdma) ci)); 75879bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville } 75979bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville } 760cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (lteCells.length() != 0) { 761cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += String.format( 7622b77d7460ccebd97826529f186596df14050f0aeNathan Harold "LTE\n%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-3.3s %-6.6s %-4.4s %-4.4s %-2.2s\n", 7632b77d7460ccebd97826529f186596df14050f0aeNathan Harold "SRV", "MCC", "MNC", "TAC", "CID", "PCI", "EARFCN", "RSRP", "RSRQ", "TA"); 764cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += lteCells.toString(); 765cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 766cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (wcdmaCells.length() != 0) { 7672b77d7460ccebd97826529f186596df14050f0aeNathan Harold value += String.format("WCDMA\n%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-6.6s %-3.3s %-4.4s\n", 7682b77d7460ccebd97826529f186596df14050f0aeNathan Harold "SRV", "MCC", "MNC", "LAC", "CID", "UARFCN", "PSC", "RSCP"); 769cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += wcdmaCells.toString(); 770cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 771cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (gsmCells.length() != 0) { 7722b77d7460ccebd97826529f186596df14050f0aeNathan Harold value += String.format("GSM\n%-3.3s %-3.3s %-3.3s %-5.5s %-5.5s %-6.6s %-4.4s %-4.4s\n", 7732b77d7460ccebd97826529f186596df14050f0aeNathan Harold "SRV", "MCC", "MNC", "LAC", "CID", "ARFCN", "BSIC", "RSSI"); 774cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += gsmCells.toString(); 775cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 776cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (cdmaCells.length() != 0) { 777cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += String.format( 778cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold "CDMA/EVDO\n%-3.3s %-5.5s %-5.5s %-5.5s %-6.6s %-6.6s %-6.6s %-6.6s %-5.5s\n", 779cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold "SRV", "SID", "NID", "BSID", "C-RSSI", "C-ECIO", "E-RSSI", "E-ECIO", "E-SNR"); 780cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value += cdmaCells.toString(); 781cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 782cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else { 783cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold value ="unknown"; 78479bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville } 785cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 786cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold return value.toString(); 787cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 788cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 789cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final void updateCellInfo(List<CellInfo> arrayCi) { 790cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellInfo.setText(buildCellInfoString(arrayCi)); 79179bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville } 79279bff2a254eb7785b2b8fb6b8b700c274105cfd9Wink Saville 7934f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville private final void updateDcRtInfoTv(DataConnectionRealTimeInfo dcRtInfo) { 7944f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville mDcRtInfoTv.setText(dcRtInfo.toString()); 7954f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville } 7964f0d881871edde6430e9dad045c8a9bdf1f7f904Wink Saville 797afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 798afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting() { 799afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwi.setText(String.valueOf(mMwiValue)); 800afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 801afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 802afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 803afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect() { 804afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfi.setText(String.valueOf(mCfiValue)); 805afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 806afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 807afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 808afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 8092b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateServiceState(ServiceState serviceState) { 810afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 811afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 812afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 813342101a0729a30587dc4fa79b5f017634bd985c0johnwang 814afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 815afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_IN_SERVICE: 816afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_in); 817afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 818afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 819afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 820afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_emergency); 821afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 822afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 823afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_off); 824afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 825afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 826342101a0729a30587dc4fa79b5f017634bd985c0johnwang 827afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gsmState.setText(display); 828342101a0729a30587dc4fa79b5f017634bd985c0johnwang 829afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 830afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState.setText(R.string.radioInfo_roaming_in); 831afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 832afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState.setText(R.string.radioInfo_roaming_not); 833afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 834afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 835afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project operatorName.setText(serviceState.getOperatorAlphaLong()); 836afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 837afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 838afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 8392b77d7460ccebd97826529f186596df14050f0aeNathan Harold updatePhoneState(int state) { 840afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 841afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 842afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 843afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 8442b77d7460ccebd97826529f186596df14050f0aeNathan Harold case TelephonyManager.CALL_STATE_IDLE: 845afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_idle); 846afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 8472b77d7460ccebd97826529f186596df14050f0aeNathan Harold case TelephonyManager.CALL_STATE_RINGING: 848afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_ringing); 849afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 8502b77d7460ccebd97826529f186596df14050f0aeNathan Harold case TelephonyManager.CALL_STATE_OFFHOOK: 851afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_offhook); 852afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 853afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 854afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 855afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project callState.setText(display); 856afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 857afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 858afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 859afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState() { 860afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 861afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 862afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 863afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 864afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 865afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 866afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_connected); 867afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 868afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 869afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_connecting); 870afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 871afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 872afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_disconnected); 873afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 874afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 875afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_suspended); 876afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 877afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 878342101a0729a30587dc4fa79b5f017634bd985c0johnwang 879afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gprsState.setText(display); 880afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 881afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 882afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateNetworkType() { 883e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold if(phone != null) { 8842b77d7460ccebd97826529f186596df14050f0aeNathan Harold ServiceState ss = phone.getServiceState(); 8852b77d7460ccebd97826529f186596df14050f0aeNathan Harold dataNetwork.setText(ServiceState.rilRadioTechnologyToString( 8862b77d7460ccebd97826529f186596df14050f0aeNathan Harold phone.getServiceState().getRilDataRadioTechnology())); 8872b77d7460ccebd97826529f186596df14050f0aeNathan Harold voiceNetwork.setText(ServiceState.rilRadioTechnologyToString( 8882b77d7460ccebd97826529f186596df14050f0aeNathan Harold phone.getServiceState().getRilVoiceRadioTechnology())); 8892b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 890afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 891afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 892afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 893afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateProperties() { 894afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String s; 895afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 896afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 897afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = phone.getDeviceId(); 898342101a0729a30587dc4fa79b5f017634bd985c0johnwang if (s == null) s = r.getString(R.string.radioInfo_unknown); 899c38866843e966622346dc8f7b028749cac9c2198Wink Saville mDeviceId.setText(s); 900342101a0729a30587dc4fa79b5f017634bd985c0johnwang 9019053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang s = phone.getSubscriberId(); 9029053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang if (s == null) s = r.getString(R.string.radioInfo_unknown); 9039053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang mSubscriberId.setText(s); 9049053f17b81f7a2486d8a441cd0a06b43fbbbf20fMeng Wang 905cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 906afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = phone.getLine1Number(); 907342101a0729a30587dc4fa79b5f017634bd985c0johnwang if (s == null) s = r.getString(R.string.radioInfo_unknown); 908afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project number.setText(s); 909afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 910afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 911afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateDataStats2() { 912afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 913afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 9149302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey long txPackets = TrafficStats.getMobileTxPackets(); 9159302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey long rxPackets = TrafficStats.getMobileRxPackets(); 9169302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey long txBytes = TrafficStats.getMobileTxBytes(); 9179302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey long rxBytes = TrafficStats.getMobileRxBytes(); 918342101a0729a30587dc4fa79b5f017634bd985c0johnwang 9199302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey String packets = r.getString(R.string.radioInfo_display_packets); 9209302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey String bytes = r.getString(R.string.radioInfo_display_bytes); 921342101a0729a30587dc4fa79b5f017634bd985c0johnwang 9229302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey sent.setText(txPackets + " " + packets + ", " + txBytes + " " + bytes); 9239302986035f46d2868c23db6349fd04b543eb676Jeff Sharkey received.setText(rxPackets + " " + packets + ", " + rxBytes + " " + bytes); 924afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 925afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 926afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 927afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Ping a host name 928afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 929afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void pingHostname() { 930afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 931cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold try { 932cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold Process p4 = Runtime.getRuntime().exec("ping -c 1 www.google.com"); 933cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold int status4 = p4.waitFor(); 934cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (status4 == 0) { 935cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = "Pass"; 936cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else { 937cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = String.format("Fail(%d)", status4); 938cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 939cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } catch (IOException e) { 940cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = "Fail: IOException"; 941cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 942cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold try { 943cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold Process p6 = Runtime.getRuntime().exec("ping6 -c 1 www.google.com"); 944cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold int status6 = p6.waitFor(); 945cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (status6 == 0) { 946cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV6 = "Pass"; 947cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } else { 948cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV6 = String.format("Fail(%d)", status6); 949cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 950cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } catch (IOException e) { 951cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV6 = "Fail: IOException"; 952afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 953afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (InterruptedException e) { 954cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = mPingHostnameResultV6 = "Fail: InterruptedException"; 955afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 956afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 957afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 958afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 959afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * This function checks for basic functionality of HTTP Client. 960afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 961afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void httpClientTest() { 962f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath HttpURLConnection urlConnection = null; 963afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 964f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath // TODO: Hardcoded for now, make it UI configurable 965b009023c76227b6c984652683be7d054033eb935Alex Klyubin URL url = new URL("https://www.google.com"); 966f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath urlConnection = (HttpURLConnection) url.openConnection(); 967f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath if (urlConnection.getResponseCode() == 200) { 968afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = "Pass"; 969afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 970f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath mHttpClientTestResult = "Fail: Code: " + urlConnection.getResponseMessage(); 971afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 972afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (IOException e) { 973afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = "Fail: IOException"; 974f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath } finally { 975f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath if (urlConnection != null) { 976f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath urlConnection.disconnect(); 977f25627c0c960cd31e069a0aed62798dd3a6416aaNarayan Kamath } 978afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 979afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 980afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 981afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void refreshSmsc() { 982cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 98321dd407c10bb1bade10233e8468ea6729bcf71efjsh phone.getSmscAddress(mHandler.obtainMessage(EVENT_QUERY_SMSC_DONE)); 984afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 985afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 986cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold private final void updateAllCellInfo() { 987cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 988cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellInfo.setText(""); 989cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mNeighboringCids.setText(""); 990cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mLocation.setText(""); 991cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 992cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold final Runnable updateAllCellInfoResults = new Runnable() { 993cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold public void run() { 994cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateNeighboringCids(mNeighboringCellResult); 995cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateLocation(mCellLocationResult); 996cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold updateCellInfo(mCellInfoResult); 997cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 998cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold }; 999cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 1000cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold Thread locThread = new Thread() { 1001cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold @Override 1002cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold public void run() { 1003cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellInfoResult = mTelephonyManager.getAllCellInfo(); 1004cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mCellLocationResult = mTelephonyManager.getCellLocation(); 1005cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mNeighboringCellResult = mTelephonyManager.getNeighboringCellInfo(); 1006cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 1007cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHandler.post(updateAllCellInfoResults); 1008cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 1009cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold }; 1010cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold locThread.start(); 1011cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold } 1012cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 1013afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updatePingState() { 1014afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Set all to unknown since the threads will take a few secs to update. 1015cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV4 = getResources().getString(R.string.radioInfo_unknown); 1016cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameResultV6 = getResources().getString(R.string.radioInfo_unknown); 1017afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = getResources().getString(R.string.radioInfo_unknown); 1018afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1019cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV4.setText(mPingHostnameResultV4); 1020cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV6.setText(mPingHostnameResultV6); 1021afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest.setText(mHttpClientTestResult); 1022afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1023afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Runnable updatePingResults = new Runnable() { 1024afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 1025cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV4.setText(mPingHostnameResultV4); 1026cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPingHostnameV6.setText(mPingHostnameResultV6); 1027afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest.setText(mHttpClientTestResult); 1028afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1029afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1030afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1031afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Thread hostname = new Thread() { 1032afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 1033afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 1034afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingHostname(); 1035cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHandler.post(updatePingResults); 1036afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1037afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1038afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project hostname.start(); 1039afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1040afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Thread httpClient = new Thread() { 1041afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 1042afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 1043afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project httpClientTest(); 1044cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mHandler.post(updatePingResults); 1045afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1046afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1047afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project httpClient.start(); 1048afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1049afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1050afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewADNCallback = new MenuItem.OnMenuItemClickListener() { 1051afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 1052afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 1053afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 1054afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 1055afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 1056afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 1057afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 1058afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 1059afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "com.android.phone.SimContacts"); 1060afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 1061afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 1062afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1063afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1064afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1065afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewFDNCallback = new MenuItem.OnMenuItemClickListener() { 1066afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 1067afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 1068afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 1069afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 1070afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 1071afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 1072afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 1073afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 1074da90d68b58091a284e1a9edeb5260ff8c51a25d1Andrew Lee "com.android.phone.settings.fdn.FdnList"); 1075afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 1076afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 1077afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1078afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1079afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1080afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewSDNCallback = new MenuItem.OnMenuItemClickListener() { 1081afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 1082afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent( 1083c38866843e966622346dc8f7b028749cac9c2198Wink Saville Intent.ACTION_VIEW, Uri.parse("content://icc/sdn")); 1084afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 1085afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 1086afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 1087afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 1088afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 1089afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 1090afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "com.android.phone.ADNList"); 1091afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 1092afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 1093afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1094afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1095afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1096e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold private MenuItem.OnMenuItemClickListener mGetImsStatus = new MenuItem.OnMenuItemClickListener() { 1097a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink public boolean onMenuItemClick(MenuItem item) { 1098e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold boolean isImsRegistered = phone.isImsRegistered(); 1099e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold boolean availableVolte = phone.isVolteEnabled(); 1100e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold boolean availableWfc = phone.isWifiCallingEnabled(); 1101e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold boolean availableVt = phone.isVideoEnabled(); 1102e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold boolean availableUt = phone.isUtEnabled(); 1103e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1104e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold final String imsRegString = isImsRegistered ? 1105e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold getString(R.string.radio_info_ims_reg_status_registered) : 1106e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold getString(R.string.radio_info_ims_reg_status_not_registered); 1107e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1108e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold final String available = getString(R.string.radio_info_ims_feature_status_available); 1109e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold final String unavailable = getString( 1110e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold R.string.radio_info_ims_feature_status_unavailable); 1111e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1112e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold String imsStatus = getString(R.string.radio_info_ims_reg_status, 1113e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold imsRegString, 1114e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold availableVolte ? available : unavailable, 1115e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold availableWfc ? available : unavailable, 1116e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold availableVt ? available : unavailable, 1117e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold availableUt ? available : unavailable); 1118e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1119e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold AlertDialog imsDialog = new AlertDialog.Builder(RadioInfo.this) 1120e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold .setMessage(imsStatus) 1121e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold .setTitle(getString(R.string.radio_info_ims_reg_status_title)) 1122e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold .create(); 1123e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1124e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold imsDialog.show(); 1125e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold 1126a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink return true; 1127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1128a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink }; 1129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1130a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink private MenuItem.OnMenuItemClickListener mSelectBandCallback = new MenuItem.OnMenuItemClickListener() { 1131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 1132a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent intent = new Intent(); 1133a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink intent.setClass(RadioInfo.this, BandMode.class); 1134a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink startActivity(intent); 1135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 1136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1138342101a0729a30587dc4fa79b5f017634bd985c0johnwang 1139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mToggleData = new MenuItem.OnMenuItemClickListener() { 1140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 1141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 1142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 1143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 1144cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 11450d4c500e98f7499db524c8073e2c8e9dfaa1febbRobert Greenwalt phone.setDataEnabled(false); 1146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 1147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 1148cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 11490d4c500e98f7499db524c8073e2c8e9dfaa1febbRobert Greenwalt phone.setDataEnabled(true); 1150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 1151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 1152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // do nothing 1153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 1154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 1156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 11592b77d7460ccebd97826529f186596df14050f0aeNathan Harold private boolean isRadioOn() { 11602b77d7460ccebd97826529f186596df14050f0aeNathan Harold //FIXME: Replace with a TelephonyManager call 11612b77d7460ccebd97826529f186596df14050f0aeNathan Harold return phone.getServiceState().getState() != ServiceState.STATE_POWER_OFF; 1162426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville } 1163426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville 11642b77d7460ccebd97826529f186596df14050f0aeNathan Harold private void updateRadioPowerState() { 11652b77d7460ccebd97826529f186596df14050f0aeNathan Harold //delightful hack to prevent on-checked-changed calls from 11662b77d7460ccebd97826529f186596df14050f0aeNathan Harold //actually forcing the radio preference to its transient/current value. 11672b77d7460ccebd97826529f186596df14050f0aeNathan Harold radioPowerOnSwitch.setOnCheckedChangeListener(null); 11682b77d7460ccebd97826529f186596df14050f0aeNathan Harold radioPowerOnSwitch.setChecked(isRadioOn()); 11692b77d7460ccebd97826529f186596df14050f0aeNathan Harold radioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener); 1170426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville } 1171426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville 1172e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold void setImsVolteProvisionedState(boolean state) { 117312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold Log.d(TAG, "setImsVolteProvisioned state: " + ((state)? "on":"off")); 1174e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold setImsConfigProvisionedState(IMS_VOLTE_PROVISIONED_CONFIG_ID, state); 117512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 1176382a75b105506f9ef8e6e735fcfa40ddccbd87ccWink Saville 1177e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold void setImsVtProvisionedState(boolean state) { 117812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold Log.d(TAG, "setImsVtProvisioned() state: " + ((state)? "on":"off")); 1179e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold setImsConfigProvisionedState(IMS_VT_PROVISIONED_CONFIG_ID, state); 118012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 118112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 1182e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold void setImsWfcProvisionedState(boolean state) { 118312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold Log.d(TAG, "setImsWfcProvisioned() state: " + ((state)? "on":"off")); 1184e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold setImsConfigProvisionedState(IMS_WFC_PROVISIONED_CONFIG_ID, state); 118512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 11862b77d7460ccebd97826529f186596df14050f0aeNathan Harold 1187586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang void setEabProvisionedState(boolean state) { 1188586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang Log.d(TAG, "setEabProvisioned() state: " + ((state)? "on":"off")); 1189586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang setImsConfigProvisionedState(EAB_PROVISIONED_CONFIG_ID, state); 1190586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1191586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1192e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold void setImsConfigProvisionedState(int configItem, boolean state) { 11932b77d7460ccebd97826529f186596df14050f0aeNathan Harold if (phone != null && mImsManager != null) { 11945c449ae5ce48aa579605ae61cdbb6a2a1a961e05Philip P. Moltmann QueuedWork.queue(new Runnable() { 11952b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void run() { 11962b77d7460ccebd97826529f186596df14050f0aeNathan Harold try { 11972b77d7460ccebd97826529f186596df14050f0aeNathan Harold mImsManager.getConfigInterface().setProvisionedValue( 119812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold configItem, 11992b77d7460ccebd97826529f186596df14050f0aeNathan Harold state? 1 : 0); 12002b77d7460ccebd97826529f186596df14050f0aeNathan Harold } catch (ImsException e) { 120112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold Log.e(TAG, "setImsConfigProvisioned() exception:", e); 12022b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 1203cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak } 12045c449ae5ce48aa579605ae61cdbb6a2a1a961e05Philip P. Moltmann }, false); 1205cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak } 12062b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 1207cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak 120812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold OnCheckedChangeListener mRadioPowerOnChangeListener = new OnCheckedChangeListener() { 120912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold @Override 121012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 121112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold log("toggle radio power: currently " + (isRadioOn()?"on":"off")); 121212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold phone.setRadioPower(isChecked); 121312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 121412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold }; 121512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 121612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private boolean isImsVolteProvisioned() { 12172b77d7460ccebd97826529f186596df14050f0aeNathan Harold if (phone != null && mImsManager != null) { 12182b77d7460ccebd97826529f186596df14050f0aeNathan Harold return mImsManager.isVolteEnabledByPlatform(phone.getContext()) 12192b77d7460ccebd97826529f186596df14050f0aeNathan Harold && mImsManager.isVolteProvisionedOnDevice(phone.getContext()); 1220cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak } 1221cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak return false; 1222cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak } 1223cb267a6f8caf42a7e2adf000262ae327ce4d5f32Pavel Zhamaitsiak 122412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold OnCheckedChangeListener mImsVolteCheckedChangeListener = new OnCheckedChangeListener() { 1225426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville @Override 12262b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 122712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold setImsVolteProvisionedState(isChecked); 1228e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold } 1229426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville }; 1230426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville 123112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private boolean isImsVtProvisioned() { 123212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold if (phone != null && mImsManager != null) { 123312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold return mImsManager.isVtEnabledByPlatform(phone.getContext()) 123412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold && mImsManager.isVtProvisionedOnDevice(phone.getContext()); 123512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 123612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold return false; 123712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 123812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 123912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold OnCheckedChangeListener mImsVtCheckedChangeListener = new OnCheckedChangeListener() { 124012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold @Override 124112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 124212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold setImsVtProvisionedState(isChecked); 1243e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold } 124412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold }; 124512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 124612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private boolean isImsWfcProvisioned() { 124712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold if (phone != null && mImsManager != null) { 124812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold return mImsManager.isWfcEnabledByPlatform(phone.getContext()) 124912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold && mImsManager.isWfcProvisionedOnDevice(phone.getContext()); 125012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 125112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold return false; 125212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold } 125312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 125412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold OnCheckedChangeListener mImsWfcCheckedChangeListener = new OnCheckedChangeListener() { 125512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold @Override 125612e1f55e926dd376ae17e48c1929524216222dbdNathan Harold public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 125712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold setImsWfcProvisionedState(isChecked); 1258e272c2078ba1626e1f14c57257d9516bd107aceaNathan Harold } 125912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold }; 126012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 1261586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang private boolean isEabProvisioned() { 1262586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang return isFeatureProvisioned(EAB_PROVISIONED_CONFIG_ID, false); 1263586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1264586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1265586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang OnCheckedChangeListener mEabCheckedChangeListener = new OnCheckedChangeListener() { 1266586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang @Override 1267586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 1268586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang setEabProvisionedState(isChecked); 1269586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1270586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang }; 1271586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1272586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang private boolean isFeatureProvisioned(int featureId, boolean defaultValue) { 1273586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang boolean provisioned = defaultValue; 1274586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang if (mImsManager != null) { 1275586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang try { 1276586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang ImsConfig imsConfig = mImsManager.getConfigInterface(); 1277586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang if (imsConfig != null) { 1278586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang provisioned = 1279586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang (imsConfig.getProvisionedValue(featureId) 1280586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang == ImsConfig.FeatureValueConstants.ON); 1281586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1282586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } catch (ImsException ex) { 1283586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang Log.e(TAG, "isFeatureProvisioned() exception:", ex); 1284586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1285586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1286586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1287586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang log("isFeatureProvisioned() featureId=" + featureId + " provisioned=" + provisioned); 1288586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang return provisioned; 1289586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1290586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1291586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang private static boolean isEabEnabledByPlatform(Context context) { 1292586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang if (context != null) { 1293586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang CarrierConfigManager configManager = (CarrierConfigManager) 1294586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang context.getSystemService(Context.CARRIER_CONFIG_SERVICE); 1295586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang if (configManager != null && configManager.getConfig().getBoolean( 1296586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL)) { 1297586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang return true; 1298586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1299586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1300586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang return false; 1301586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang } 1302586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 130312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold private void updateImsProvisionedState() { 130412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold log("updateImsProvisionedState isImsVolteProvisioned()=" + isImsVolteProvisioned()); 13052b77d7460ccebd97826529f186596df14050f0aeNathan Harold //delightful hack to prevent on-checked-changed calls from 13062b77d7460ccebd97826529f186596df14050f0aeNathan Harold //actually forcing the ims provisioning to its transient/current value. 130712e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVolteProvisionedSwitch.setOnCheckedChangeListener(null); 130812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned()); 130912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener); 13106dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold imsVolteProvisionedSwitch.setEnabled( 13116dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold mImsManager.isVolteEnabledByPlatform(phone.getContext())); 131212e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 131312e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVtProvisionedSwitch.setOnCheckedChangeListener(null); 131412e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVtProvisionedSwitch.setChecked(isImsVtProvisioned()); 131512e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener); 13166dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold imsVtProvisionedSwitch.setEnabled( 13176dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold mImsManager.isVtEnabledByPlatform(phone.getContext())); 131812e1f55e926dd376ae17e48c1929524216222dbdNathan Harold 131912e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsWfcProvisionedSwitch.setOnCheckedChangeListener(null); 132012e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned()); 132112e1f55e926dd376ae17e48c1929524216222dbdNathan Harold imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener); 13226dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold imsWfcProvisionedSwitch.setEnabled( 13236dc15e93a36ab4cf5c42391fe53f5466b6105179Nathan Harold mImsManager.isWfcEnabledByPlatform(phone.getContext())); 1324586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang 1325586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang eabProvisionedSwitch.setOnCheckedChangeListener(null); 1326586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang eabProvisionedSwitch.setChecked(isEabProvisioned()); 1327586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener); 1328586741cc15ba71055174ec2c9590e106f7b5d82bMeng Wang eabProvisionedSwitch.setEnabled(isEabEnabledByPlatform(phone.getContext())); 1329426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville } 1330426fc66a8a9371e34d936d18d5b254fd002b4c11Wink Saville 1331a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink OnClickListener mDnsCheckButtonHandler = new OnClickListener() { 1332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 1333cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold //FIXME: Replace with a TelephonyManager call 1334a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink phone.disableDnsCheck(!phone.isDnsCheckDisabled()); 1335a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink updateDnsCheckState(); 1336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1338342101a0729a30587dc4fa79b5f017634bd985c0johnwang 1339a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink OnClickListener mOemInfoButtonHandler = new OnClickListener() { 1340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 1341a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent intent = new Intent("com.android.settings.OEM_RADIO_INFO"); 1342a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink try { 1343a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink startActivity(intent); 1344a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } catch (android.content.ActivityNotFoundException ex) { 1345bf4712895a570ce360db57f775b47c858f1d71b2Wink Saville log("OEM-specific Info/Settings Activity Not Found : " + ex); 1346a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink // If the activity does not exist, there are no OEM 1347a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink // settings, and so we can just do nothing... 1348a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } 1349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1351342101a0729a30587dc4fa79b5f017634bd985c0johnwang 1352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mPingButtonHandler = new OnClickListener() { 1353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 1354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePingState(); 1355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mUpdateSmscButtonHandler = new OnClickListener() { 1359afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 1360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setEnabled(false); 136121dd407c10bb1bade10233e8468ea6729bcf71efjsh phone.setSmscAddress(smsc.getText().toString(), 1362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.obtainMessage(EVENT_UPDATE_SMSC_DONE)); 1363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mRefreshSmscButtonHandler = new OnClickListener() { 1367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 1368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmsc(); 1369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1372fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang OnClickListener mCarrierProvisioningButtonHandler = new OnClickListener() { 1373fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang public void onClick(View v) { 1374a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang final Intent intent = new Intent("com.android.settings.CARRIER_PROVISIONING"); 1375a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang final ComponentName serviceComponent = ComponentName.unflattenFromString( 1376a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang "com.android.omadm.service/.DMIntentReceiver"); 1377fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang intent.setComponent(serviceComponent); 1378a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang sendBroadcast(intent); 1379fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang } 1380fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang }; 1381fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang 1382fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang OnClickListener mTriggerCarrierProvisioningButtonHandler = new OnClickListener() { 1383fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang public void onClick(View v) { 1384a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang final Intent intent = new Intent("com.android.settings.TRIGGER_CARRIER_PROVISIONING"); 1385a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang final ComponentName serviceComponent = ComponentName.unflattenFromString( 1386a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang "com.android.omadm.service/.DMIntentReceiver"); 1387fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang intent.setComponent(serviceComponent); 1388a04449b88a0b0d19783a92c40b1510c017f7fae1Meng Wang sendBroadcast(intent); 1389fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang } 1390fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang }; 1391fd781e91d4d0e716bd75e4f31c913311feba2dc3Youhan Wang 1392cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold AdapterView.OnItemSelectedListener mPreferredNetworkHandler = 1393cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold new AdapterView.OnItemSelectedListener() { 1394cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold 1395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onItemSelected(AdapterView parent, View v, int pos, long id) { 1396cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold if (mPreferredNetworkTypeResult != pos && pos >= 0 1397cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold && pos <= mPreferredNetworkLabels.length - 2) { 1398cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold mPreferredNetworkTypeResult = pos; 1399cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold Message msg = mHandler.obtainMessage(EVENT_SET_PREFERRED_TYPE_DONE); 1400cea413a9bb9ada05855a3d5c301dc459e6736da3Nathan Harold phone.setPreferredNetworkType(mPreferredNetworkTypeResult, msg); 1401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onNothingSelected(AdapterView parent) { 1405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 1407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 14082b77d7460ccebd97826529f186596df14050f0aeNathan Harold AdapterView.OnItemSelectedListener mCellInfoRefreshRateHandler = 14092b77d7460ccebd97826529f186596df14050f0aeNathan Harold new AdapterView.OnItemSelectedListener() { 14102b77d7460ccebd97826529f186596df14050f0aeNathan Harold 14112b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onItemSelected(AdapterView parent, View v, int pos, long id) { 14122b77d7460ccebd97826529f186596df14050f0aeNathan Harold mCellInfoRefreshRateIndex = pos; 14135cce06b2e88aa0f20741ebe7f880580dad65307aSooraj Sasindran mTelephonyManager.setCellInfoListRate(mCellInfoRefreshRates[pos]); 14142b77d7460ccebd97826529f186596df14050f0aeNathan Harold updateAllCellInfo(); 14152b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 14162b77d7460ccebd97826529f186596df14050f0aeNathan Harold 14172b77d7460ccebd97826529f186596df14050f0aeNathan Harold public void onNothingSelected(AdapterView parent) { 14182b77d7460ccebd97826529f186596df14050f0aeNathan Harold } 14192b77d7460ccebd97826529f186596df14050f0aeNathan Harold }; 1420bf4712895a570ce360db57f775b47c858f1d71b2Wink Saville 1421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 1422