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; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.AlertDialog; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.DialogInterface; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 23a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalinkimport android.content.pm.PackageManager; 24a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalinkimport android.content.pm.ResolveInfo; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.SharedPreferences; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.Uri; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.AsyncResult; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.INetStatService; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.RemoteException; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.ServiceManager; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceManager; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.CellLocation; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.NeighboringCellInfo; 42534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jshimport android.telephony.cdma.CdmaCellLocation; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.gsm.GsmCellLocation; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.format.DateUtils; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log; 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.Menu; 47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.MenuItem; 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View; 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View.OnClickListener; 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.AdapterView; 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.ArrayAdapter; 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Button; 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Spinner; 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.TextView; 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.EditText; 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 5787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jshimport com.android.internal.telephony.DataConnection; 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver; 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties; 620d93697d3a52f7b9db37b403715c3a27678df4ffWink Savilleimport com.android.internal.telephony.gsm.GsmDataConnection; 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.HttpResponse; 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.client.HttpClient; 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.client.methods.HttpGet; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport org.apache.http.impl.client.DefaultHttpClient; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.DataOutputStream; 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.io.IOException; 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.net.UnknownHostException; 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.ArrayList; 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.List; 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 76a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalinkimport android.util.Log; 77a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class RadioInfo extends Activity { 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final String TAG = "phone"; 80342101a0729a30587dc4fa79b5f017634bd985c0johnwang 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_PHONE_STATE_CHANGED = 100; 82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; 83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SERVICE_STATE_CHANGED = 300; 84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_CFI_CHANGED = 302; 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_QUERY_PREFERRED_TYPE_DONE = 1000; 87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SET_PREFERRED_TYPE_DONE = 1001; 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_QUERY_NEIGHBORING_CIDS_DONE = 1002; 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_QUERY_SMSC_DONE = 1005; 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_SMSC_DONE = 1006; 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_SELECT_BAND = 0; 93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_ADN = 1; 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_FDN = 2; 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_VIEW_SDN = 3; 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_GET_PDP_LIST = 4; 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_ITEM_TOGGLE_DATA = 5; 98a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 99a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink static final String ENABLE_DATA_STR = "Enable data connection"; 100a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink static final String DISABLE_DATA_STR = "Disable data connection"; 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 102c38866843e966622346dc8f7b028749cac9c2198Wink Saville private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView number; 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView callState; 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView operatorName; 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView roamingState; 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView gsmState; 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView gprsState; 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView network; 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView dBm; 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mMwi; 112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mCfi; 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mLocation; 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mNeighboringCids; 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView resets; 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView attempts; 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView successes; 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView disconnects; 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView sentSinceReceived; 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView sent; 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView received; 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mPingIpAddr; 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mPingHostname; 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView mHttpClientTest; 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TextView dnsCheckState; 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditText smsc; 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button radioPowerButton; 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button dnsCheckToggleButton; 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button pingTestButton; 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button updateSmscButton; 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Button refreshSmscButton; 132a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink private Button oemInfoButton; 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Spinner preferredNetworkType; 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone phone = null; 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateIntentReceiver mPhoneStateReceiver; 138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private INetStatService netstat; 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mPingIpAddrResult; 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mPingHostnameResult; 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mHttpClientTestResult; 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mMwiValue = false; 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mCfiValue = false; 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats(); 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePdpList(); 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataActivity(int direction) { 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats2(); 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCellLocationChanged(CellLocation location) { 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateLocation(location); 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onMessageWaitingIndicatorChanged(boolean mwi) { 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwiValue = mwi; 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting(); 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCallForwardingIndicatorChanged(boolean cfi) { 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfiValue = cfi; 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect(); 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler = new Handler() { 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project AsyncResult ar; 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_PHONE_STATE_CHANGED: 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePhoneState(); 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SIGNAL_STRENGTH_CHANGED: 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSignalStrength(); 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 190afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SERVICE_STATE_CHANGED: 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateServiceState(); 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePowerState(); 193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 194afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_QUERY_PREFERRED_TYPE_DONE: 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 197afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception == null) { 198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int type = ((int[])ar.result)[0]; 199afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType.setSelection(type, true); 200afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 20187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh preferredNetworkType.setSelection(8, true); 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 204afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SET_PREFERRED_TYPE_DONE: 205afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.getPreferredNetworkType( 208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE)); 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 210afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_QUERY_NEIGHBORING_CIDS_DONE: 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception == null) { 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNeighboringCids((ArrayList<NeighboringCellInfo>)ar.result); 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mNeighboringCids.setText("unknown"); 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_QUERY_SMSC_DONE: 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc.setText("refresh error"); 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 22421dd407c10bb1bade10233e8468ea6729bcf71efjsh smsc.setText((String)ar.result); 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_SMSC_DONE: 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setEnabled(true); 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ar= (AsyncResult) msg.obj; 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ar.exception != null) { 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc.setText("update error"); 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onCreate(Bundle icicle) { 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 244afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setContentView(R.layout.radio_info); 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone = PhoneFactory.getDefaultPhone(); 249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 250c38866843e966622346dc8f7b028749cac9c2198Wink Saville mDeviceId= (TextView) findViewById(R.id.imei); 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project number = (TextView) findViewById(R.id.number); 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project callState = (TextView) findViewById(R.id.call); 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project operatorName = (TextView) findViewById(R.id.operator); 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState = (TextView) findViewById(R.id.roaming); 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gsmState = (TextView) findViewById(R.id.gsm); 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gprsState = (TextView) findViewById(R.id.gprs); 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project network = (TextView) findViewById(R.id.network); 258afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dBm = (TextView) findViewById(R.id.dbm); 259afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwi = (TextView) findViewById(R.id.mwi); 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfi = (TextView) findViewById(R.id.cfi); 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLocation = (TextView) findViewById(R.id.location); 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mNeighboringCids = (TextView) findViewById(R.id.neighboring); 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project resets = (TextView) findViewById(R.id.resets); 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project attempts = (TextView) findViewById(R.id.attempts); 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project successes = (TextView) findViewById(R.id.successes); 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project disconnects = (TextView) findViewById(R.id.disconnects); 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sentSinceReceived = (TextView) findViewById(R.id.sentSinceReceived); 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sent = (TextView) findViewById(R.id.sent); 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project received = (TextView) findViewById(R.id.received); 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project smsc = (EditText) findViewById(R.id.smsc); 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckState = (TextView) findViewById(R.id.dnsCheckState); 273afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 274afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddr = (TextView) findViewById(R.id.pingIpAddr); 275afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostname = (TextView) findViewById(R.id.pingHostname); 276afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest = (TextView) findViewById(R.id.httpClientTest); 277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType); 279afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, 280afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project android.R.layout.simple_spinner_item, mPreferredNetworkLabels); 281342101a0729a30587dc4fa79b5f017634bd985c0johnwang adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 282afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType.setAdapter(adapter); 283afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler); 284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 285afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project radioPowerButton = (Button) findViewById(R.id.radio_power); 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project radioPowerButton.setOnClickListener(mPowerButtonHandler); 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingTestButton = (Button) findViewById(R.id.ping_test); 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingTestButton.setOnClickListener(mPingButtonHandler); 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton = (Button) findViewById(R.id.update_smsc); 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setOnClickListener(mUpdateSmscButtonHandler); 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmscButton = (Button) findViewById(R.id.refresh_smsc); 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmscButton.setOnClickListener(mRefreshSmscButtonHandler); 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle); 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler); 296342101a0729a30587dc4fa79b5f017634bd985c0johnwang 297a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton = (Button) findViewById(R.id.oem_info); 298a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton.setOnClickListener(mOemInfoButtonHandler); 299a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink PackageManager pm = getPackageManager(); 300a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent oemInfoIntent = new Intent("com.android.settings.OEM_RADIO_INFO"); 301a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink List<ResolveInfo> oemInfoIntentList = pm.queryIntentActivities(oemInfoIntent, 0); 302a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink if (oemInfoIntentList.size() == 0) { 303a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink oemInfoButton.setEnabled(false); 304a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } 305a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 306afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); 307afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); 308afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); 309afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifyPhoneCallState(EVENT_PHONE_STATE_CHANGED); 310342101a0729a30587dc4fa79b5f017634bd985c0johnwang 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.getPreferredNetworkType( 312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.obtainMessage(EVENT_QUERY_PREFERRED_TYPE_DONE)); 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.getNeighboringCids( 314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.obtainMessage(EVENT_QUERY_NEIGHBORING_CIDS_DONE)); 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project netstat = INetStatService.Stub.asInterface(ServiceManager.getService("netstat")); 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CellLocation.requestLocationUpdate(); 319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 322afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 324afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 325afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePhoneState(); 326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSignalStrength(); 327afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting(); 328afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect(); 329afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateServiceState(); 330afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateLocation(mTelephonyManager.getCellLocation()); 331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats(); 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataStats2(); 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePowerState(); 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateProperties(); 336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDnsCheckState(); 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 338afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Log.i(TAG, "[RadioInfo] onResume: register phone & data intents"); 339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 340afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.registerIntent(); 341afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, 342afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PhoneStateListener.LISTEN_DATA_CONNECTION_STATE 343afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_DATA_ACTIVITY 344afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_CELL_LOCATION 345afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR 346afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project | PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR); 347afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 348afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Log.i(TAG, "[RadioInfo] onPause: unregister phone & data intents"); 354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.unregisterIntent(); 356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 359afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onCreateOptionsMenu(Menu menu) { 361c38866843e966622346dc8f7b028749cac9c2198Wink Saville menu.add(0, MENU_ITEM_SELECT_BAND, 0, R.string.radio_info_band_mode_label) 362c38866843e966622346dc8f7b028749cac9c2198Wink Saville .setOnMenuItemClickListener(mSelectBandCallback) 363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .setAlphabeticShortcut('b'); 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_ADN, 0, 365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewADN).setOnMenuItemClickListener(mViewADNCallback); 366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_FDN, 0, 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback); 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_VIEW_SDN, 0, 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback); 370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_GET_PDP_LIST, 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 0, R.string.radioInfo_menu_getPDP).setOnMenuItemClickListener(mGetPdpList); 372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(1, MENU_ITEM_TOGGLE_DATA, 373a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink 0, DISABLE_DATA_STR).setOnMenuItemClickListener(mToggleData); 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 375afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 377afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 378c38866843e966622346dc8f7b028749cac9c2198Wink Saville public boolean onPrepareOptionsMenu(Menu menu) { 379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Get the TOGGLE DATA menu item in the right state. 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project MenuItem item = menu.findItem(MENU_ITEM_TOGGLE_DATA); 381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean visible = true; 383afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 387a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink item.setTitle(DISABLE_DATA_STR); 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 390a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink item.setTitle(ENABLE_DATA_STR); 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project visible = false; 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project item.setVisible(visible); 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean isRadioOn() { 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return phone.getServiceState().getState() != ServiceState.STATE_POWER_OFF; 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 403342101a0729a30587dc4fa79b5f017634bd985c0johnwang 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updatePowerState() { 405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String buttonText = isRadioOn() ? 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getString(R.string.turn_off_radio) : 407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getString(R.string.turn_on_radio); 408c38866843e966622346dc8f7b028749cac9c2198Wink Saville radioPowerButton.setText(buttonText); 409afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDnsCheckState() { 4125304c7e38f89f7616bd4c834a14b4d764356d19bMike Lockwood dnsCheckState.setText(phone.isDnsCheckDisabled() ? 413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "0.0.0.0 allowed" :"0.0.0.0 not allowed"); 414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 415e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville 416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 417afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSignalStrength() { 418e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener 419e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // should probably used instead. 420e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville int state = mPhoneStateReceiver.getServiceState().getState(); 421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if ((ServiceState.STATE_OUT_OF_SERVICE == state) || 424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (ServiceState.STATE_POWER_OFF == state)) { 425afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dBm.setText("0"); 426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 427e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville 428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm(); 429e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville 430afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (-1 == signalDbm) signalDbm = 0; 431afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 432afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int signalAsu = mPhoneStateReceiver.getSignalStrength(); 433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (-1 == signalAsu) signalAsu = 0; 435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project dBm.setText(String.valueOf(signalDbm) + " " 437afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + r.getString(R.string.radioInfo_display_dbm) + " " 438afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + String.valueOf(signalAsu) + " " 439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + r.getString(R.string.radioInfo_display_asu)); 440afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 442afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateLocation(CellLocation location) { 443534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh Resources r = getResources(); 444c38866843e966622346dc8f7b028749cac9c2198Wink Saville if (location instanceof GsmCellLocation) { 445c38866843e966622346dc8f7b028749cac9c2198Wink Saville GsmCellLocation loc = (GsmCellLocation)location; 446534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lac = loc.getLac(); 447534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int cid = loc.getCid(); 448534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText(r.getString(R.string.radioInfo_lac) + " = " 449534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lac == -1) ? "unknown" : Integer.toHexString(lac)) 450534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 451534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + r.getString(R.string.radioInfo_cid) + " = " 452534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((cid == -1) ? "unknown" : Integer.toHexString(cid))); 453534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh } else if (location instanceof CdmaCellLocation) { 454534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh CdmaCellLocation loc = (CdmaCellLocation)location; 455534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int bid = loc.getBaseStationId(); 456534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int sid = loc.getSystemId(); 457534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int nid = loc.getNetworkId(); 458534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lat = loc.getBaseStationLatitude(); 459534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh int lon = loc.getBaseStationLongitude(); 460534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText("BID = " 461534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((bid == -1) ? "unknown" : Integer.toHexString(bid)) 462534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 463534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "SID = " 464534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((sid == -1) ? "unknown" : Integer.toHexString(sid)) 465534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 466534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "NID = " 467534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((nid == -1) ? "unknown" : Integer.toHexString(nid)) 468534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "\n" 469534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "LAT = " 470534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lat == -1) ? "unknown" : Integer.toHexString(lat)) 471534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + " " 472534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + "LONG = " 473534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh + ((lon == -1) ? "unknown" : Integer.toHexString(lon))); 474534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh } else { 475534f5ae34ee8fa76ed1cecb34c1d7898892f14f8jsh mLocation.setText("unknown"); 476c38866843e966622346dc8f7b028749cac9c2198Wink Saville } 477afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 478afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 479afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 480afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 481afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateNeighboringCids(ArrayList<NeighboringCellInfo> cids) { 482f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang StringBuilder sb = new StringBuilder(); 483f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang 484afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (cids != null) { 485afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if ( cids.isEmpty() ) { 486f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append("no neighboring cells"); 487afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 488afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (NeighboringCellInfo cell : cids) { 489f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append(cell.toString()).append(" "); 490afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 491afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 492afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 493f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang sb.append("unknown"); 494afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 495f02c65f8c1092b0d10fe2783f2f9fd9857146f7fjohnwang mNeighboringCids.setText(sb.toString()); 496afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 497afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 498afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 499afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateMessageWaiting() { 500afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMwi.setText(String.valueOf(mMwiValue)); 501afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 502afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 503afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 504afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateCallRedirect() { 505afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCfi.setText(String.valueOf(mCfiValue)); 506afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 507afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 508afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 509afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 510afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateServiceState() { 511afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ServiceState serviceState = mPhoneStateReceiver.getServiceState(); 512afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 513afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 514afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 515342101a0729a30587dc4fa79b5f017634bd985c0johnwang 516afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 517afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_IN_SERVICE: 518afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_in); 519afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 520afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 521afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 522afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_emergency); 523afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 524afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 525afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_service_off); 526afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 527afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 528342101a0729a30587dc4fa79b5f017634bd985c0johnwang 529afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gsmState.setText(display); 530342101a0729a30587dc4fa79b5f017634bd985c0johnwang 531afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 532afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState.setText(R.string.radioInfo_roaming_in); 533afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 534afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project roamingState.setText(R.string.radioInfo_roaming_not); 535afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 536afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 537afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project operatorName.setText(serviceState.getOperatorAlphaLong()); 538afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 539afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 540afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 541afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePhoneState() { 542afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Phone.State state = mPhoneStateReceiver.getPhoneState(); 543afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 544afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 545afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 546afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 547afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case IDLE: 548afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_idle); 549afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 550afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case RINGING: 551afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_ringing); 552afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 553afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case OFFHOOK: 554afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_phone_offhook); 555afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 556afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 557afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 558afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project callState.setText(display); 559afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 560afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 561afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 562afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState() { 563afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 564afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 565afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = r.getString(R.string.radioInfo_unknown); 566afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 567afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 568afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 569afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_connected); 570afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 571afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 572afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_connecting); 573afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 574afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 575afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_disconnected); 576afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 577afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 578afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = r.getString(R.string.radioInfo_data_suspended); 579afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 580afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 581342101a0729a30587dc4fa79b5f017634bd985c0johnwang 582afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project gprsState.setText(display); 583afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 584afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 585afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateNetworkType() { 586afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 587afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = SystemProperties.get(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, 588afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project r.getString(R.string.radioInfo_unknown)); 589afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 590afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project network.setText(display); 591afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 592afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 593afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void 594afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateProperties() { 595afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String s; 596afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 597afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 598afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = phone.getDeviceId(); 599342101a0729a30587dc4fa79b5f017634bd985c0johnwang if (s == null) s = r.getString(R.string.radioInfo_unknown); 600c38866843e966622346dc8f7b028749cac9c2198Wink Saville mDeviceId.setText(s); 601342101a0729a30587dc4fa79b5f017634bd985c0johnwang 602c38866843e966622346dc8f7b028749cac9c2198Wink Saville 603afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = phone.getLine1Number(); 604342101a0729a30587dc4fa79b5f017634bd985c0johnwang if (s == null) s = r.getString(R.string.radioInfo_unknown); 605afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project number.setText(s); 606afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 607afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 608afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateDataStats() { 609afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String s; 610afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 611afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = SystemProperties.get("net.gsm.radio-reset", "0"); 612afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project resets.setText(s); 613afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 614afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = SystemProperties.get("net.gsm.attempt-gprs", "0"); 615afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project attempts.setText(s); 616afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 617afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = SystemProperties.get("net.gsm.succeed-gprs", "0"); 618afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project successes.setText(s); 619afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 620afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project //s = SystemProperties.get("net.gsm.disconnect", "0"); 621afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project //disconnects.setText(s); 622afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 623afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project s = SystemProperties.get("net.ppp.reset-by-timeout", "0"); 624afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sentSinceReceived.setText(s); 625afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 626afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 627afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updateDataStats2() { 628afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Resources r = getResources(); 629afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 630afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 631afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long txPackets = netstat.getMobileTxPackets(); 632afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long rxPackets = netstat.getMobileRxPackets(); 633afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long txBytes = netstat.getMobileTxBytes(); 634afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long rxBytes = netstat.getMobileRxBytes(); 635342101a0729a30587dc4fa79b5f017634bd985c0johnwang 636afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String packets = r.getString(R.string.radioInfo_display_packets); 637afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String bytes = r.getString(R.string.radioInfo_display_bytes); 638342101a0729a30587dc4fa79b5f017634bd985c0johnwang 639afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sent.setText(txPackets + " " + packets + ", " + txBytes + " " + bytes); 640afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project received.setText(rxPackets + " " + packets + ", " + rxBytes + " " + bytes); 641afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (RemoteException e) { 642afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 643afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 644afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 645afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 646afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Ping a IP address. 647afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 648afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void pingIpAddr() { 649afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 650afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // This is hardcoded IP addr. This is for testing purposes. 651afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // We would need to get rid of this before release. 652afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String ipAddress = "74.125.47.104"; 653afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Process p = Runtime.getRuntime().exec("ping -c 1 " + ipAddress); 654afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int status = p.waitFor(); 655afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == 0) { 656afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddrResult = "Pass"; 657afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 658afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddrResult = "Fail: IP addr not reachable"; 659afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 660afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (IOException e) { 661afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddrResult = "Fail: IOException"; 662afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (InterruptedException e) { 663afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddrResult = "Fail: InterruptedException"; 664afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 665afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 666afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 667afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 668afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Ping a host name 669afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 670afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void pingHostname() { 671afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 672342101a0729a30587dc4fa79b5f017634bd985c0johnwang Process p = Runtime.getRuntime().exec("ping -c 1 www.google.com"); 673afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int status = p.waitFor(); 674afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == 0) { 675afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult = "Pass"; 676afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 677afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult = "Fail: Host unreachable"; 678afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 679afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (UnknownHostException e) { 680afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult = "Fail: Unknown Host"; 681afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (IOException e) { 682afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult= "Fail: IOException"; 683afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (InterruptedException e) { 684afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult = "Fail: InterruptedException"; 685afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 686afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 687afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 688afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 689afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * This function checks for basic functionality of HTTP Client. 690afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 691afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void httpClientTest() { 692afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project HttpClient client = new DefaultHttpClient(); 693afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 694afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project HttpGet request = new HttpGet("http://www.google.com"); 695afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project HttpResponse response = client.execute(request); 696afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (response.getStatusLine().getStatusCode() == 200) { 697afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = "Pass"; 698afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 699afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = "Fail: Code: " + String.valueOf(response); 700afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 701afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project request.abort(); 702afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (IOException e) { 703afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = "Fail: IOException"; 704afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 705afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 706afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 707afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void refreshSmsc() { 70821dd407c10bb1bade10233e8468ea6729bcf71efjsh phone.getSmscAddress(mHandler.obtainMessage(EVENT_QUERY_SMSC_DONE)); 709afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 710afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 711afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updatePingState() { 712afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Handler handler = new Handler(); 713afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Set all to unknown since the threads will take a few secs to update. 714afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddrResult = getResources().getString(R.string.radioInfo_unknown); 715afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostnameResult = getResources().getString(R.string.radioInfo_unknown); 716afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTestResult = getResources().getString(R.string.radioInfo_unknown); 717afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 718afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddr.setText(mPingIpAddrResult); 719afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostname.setText(mPingHostnameResult); 720afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest.setText(mHttpClientTestResult); 721afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 722afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Runnable updatePingResults = new Runnable() { 723afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 724afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingIpAddr.setText(mPingIpAddrResult); 725afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPingHostname.setText(mPingHostnameResult); 726afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHttpClientTest.setText(mHttpClientTestResult); 727afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 728afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 729afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Thread ipAddr = new Thread() { 730afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 731afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 732afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingIpAddr(); 733afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project handler.post(updatePingResults); 734afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 735afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 736afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ipAddr.start(); 737afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 738afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Thread hostname = new Thread() { 739afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 740afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 741afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pingHostname(); 742afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project handler.post(updatePingResults); 743afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 744afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 745afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project hostname.start(); 746afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 747afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Thread httpClient = new Thread() { 748afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 749afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void run() { 750afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project httpClientTest(); 751afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project handler.post(updatePingResults); 752afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 753afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 754afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project httpClient.start(); 755afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 756afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 757afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final void updatePdpList() { 758afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project StringBuilder sb = new StringBuilder("========DATA=======\n"); 759afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 76087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh List<DataConnection> dcs = phone.getCurrentDataConnectionList(); 761afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 76287fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh for (DataConnection dc : dcs) { 7630d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville sb.append(" State: ").append(dc.getStateAsString()).append("\n"); 7640d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville if (dc.isActive()) { 765afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long timeElapsed = 76687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh (System.currentTimeMillis() - dc.getConnectionTime())/1000; 767afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append(" connected at ") 76887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(DateUtils.timeString(dc.getConnectionTime())) 769afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append(" and elapsed ") 77087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(DateUtils.formatElapsedTime(timeElapsed)); 77187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh 7720d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville if (dc instanceof GsmDataConnection) { 7730d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville GsmDataConnection pdp = (GsmDataConnection)dc; 77487fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh sb.append("\n to ") 77587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(pdp.getApn().toString()); 77687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh } 77787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh sb.append("\ninterface: ") 778afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append(phone.getInterfaceName(phone.getActiveApnTypes()[0])) 779afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append("\naddress: ") 780afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append(phone.getIpAddress(phone.getActiveApnTypes()[0])) 781afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append("\ngateway: ") 782afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append(phone.getGateway(phone.getActiveApnTypes()[0])); 783afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String[] dns = phone.getDnsServers(phone.getActiveApnTypes()[0]); 784afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (dns != null) { 785afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]); 786afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 7870d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville } else if (dc.isInactive()) { 788afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append(" disconnected with last try at ") 78987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(DateUtils.timeString(dc.getLastFailTime())) 790afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .append("\n fail because ") 79187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(dc.getLastFailCause().toString()); 792afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 7930d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville if (dc instanceof GsmDataConnection) { 7940d93697d3a52f7b9db37b403715c3a27678df4ffWink Saville GsmDataConnection pdp = (GsmDataConnection)dc; 79587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh sb.append(" is connecting to ") 79687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh .append(pdp.getApn().toString()); 79787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh } else { 79887fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh sb.append(" is connecting"); 79987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh } 800afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 801afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append("\n==================="); 802afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 803afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 804afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 805afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project disconnects.setText(sb.toString()); 806afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 807afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 808afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewADNCallback = new MenuItem.OnMenuItemClickListener() { 809afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 810afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 811afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 812afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 813afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 814afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 815afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 816afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 817afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "com.android.phone.SimContacts"); 818afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 819afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 820afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 821afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 822afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 823afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewFDNCallback = new MenuItem.OnMenuItemClickListener() { 824afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 825afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent(Intent.ACTION_VIEW); 826afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 827afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 828afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 829afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 830afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 831afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 832afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "com.android.phone.FdnList"); 833afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 834afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 835afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 836afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 837afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 838afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mViewSDNCallback = new MenuItem.OnMenuItemClickListener() { 839afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 840afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent intent = new Intent( 841c38866843e966622346dc8f7b028749cac9c2198Wink Saville Intent.ACTION_VIEW, Uri.parse("content://icc/sdn")); 842afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // XXX We need to specify the component here because if we don't 843afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the activity manager will try to resolve the type by calling 844afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // the content provider, which causes it to be loaded in a process 845afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // other than the Dialer process, which causes a lot of stuff to 846afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // break. 847afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project intent.setClassName("com.android.phone", 848afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "com.android.phone.ADNList"); 849afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(intent); 850afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 851afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 852afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 853afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 854a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink private MenuItem.OnMenuItemClickListener mGetPdpList = new MenuItem.OnMenuItemClickListener() { 855a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink public boolean onMenuItemClick(MenuItem item) { 856a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink phone.getDataCallList(null); 857a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink return true; 858afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 859a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink }; 860afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 861a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink private MenuItem.OnMenuItemClickListener mSelectBandCallback = new MenuItem.OnMenuItemClickListener() { 862afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 863a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent intent = new Intent(); 864a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink intent.setClass(RadioInfo.this, BandMode.class); 865a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink startActivity(intent); 866afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 867afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 868afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 869342101a0729a30587dc4fa79b5f017634bd985c0johnwang 870afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private MenuItem.OnMenuItemClickListener mToggleData = new MenuItem.OnMenuItemClickListener() { 871afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 872afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 873afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 874afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 875afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.disableDataConnectivity(); 876afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 877afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 878afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.enableDataConnectivity(); 879afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 880afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 881afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // do nothing 882afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 883afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 884afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 885afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 886afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 887afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 888afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mPowerButtonHandler = new OnClickListener() { 889afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 890afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project //log("toggle radio power: currently " + (isRadioOn()?"on":"off")); 891afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.setRadioPower(!isRadioOn()); 892afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 893afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 894afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 895a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink OnClickListener mDnsCheckButtonHandler = new OnClickListener() { 896afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 897a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink phone.disableDnsCheck(!phone.isDnsCheckDisabled()); 898a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink updateDnsCheckState(); 899afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 900afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 901342101a0729a30587dc4fa79b5f017634bd985c0johnwang 902a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink OnClickListener mOemInfoButtonHandler = new OnClickListener() { 903afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 904a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Intent intent = new Intent("com.android.settings.OEM_RADIO_INFO"); 905a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink try { 906a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink startActivity(intent); 907a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } catch (android.content.ActivityNotFoundException ex) { 908a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink Log.d(TAG, "OEM-specific Info/Settings Activity Not Found : " + ex); 909a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink // If the activity does not exist, there are no OEM 910a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink // settings, and so we can just do nothing... 911a5f4c8f8c91405038797e1529d465fd7fe06edb2Tammo Spalink } 912afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 913afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 914342101a0729a30587dc4fa79b5f017634bd985c0johnwang 915afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mPingButtonHandler = new OnClickListener() { 916afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 917afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updatePingState(); 918afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 919afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 920afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 921afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mUpdateSmscButtonHandler = new OnClickListener() { 922afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 923afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSmscButton.setEnabled(false); 92421dd407c10bb1bade10233e8468ea6729bcf71efjsh phone.setSmscAddress(smsc.getText().toString(), 925afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.obtainMessage(EVENT_UPDATE_SMSC_DONE)); 926afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 927afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 928afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 929afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project OnClickListener mRefreshSmscButtonHandler = new OnClickListener() { 930afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onClick(View v) { 931afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project refreshSmsc(); 932afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 933afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 934afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 935afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project AdapterView.OnItemSelectedListener 936afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPreferredNetworkHandler = new AdapterView.OnItemSelectedListener() { 937afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onItemSelected(AdapterView parent, View v, int pos, long id) { 938afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Message msg = mHandler.obtainMessage(EVENT_SET_PREFERRED_TYPE_DONE); 939ead6928894c5f63ba8751962d93987b412b4b209Wink Saville if (pos>=0 && pos<=7) { //IS THIS NEEDED to extend to the entire range of values 940afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project phone.setPreferredNetworkType(pos, msg); 941afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 942afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 943afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 944afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onNothingSelected(AdapterView parent) { 945afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 946afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 947afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 948afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String[] mPreferredNetworkLabels = { 94987fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "WCDMA preferred", 95087fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "GSM only", 95187fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "WCDMA only", 95287fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "GSM auto (PRL)", 95387fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "CDMA auto (PRL)", 95487fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "CDMA only", 95587fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "EvDo only", 95687fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "GSM/CDMA auto (PRL)", 95787fa11b90e9a4a5fdd73e71e6c0b057f9df1a860jsh "Unknown"}; 958afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 959