Status.java revision 386278a338d740dce95b7fa1514662b0eb5683e4
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings.deviceinfo; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.bluetooth.BluetoothDevice; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.BroadcastReceiver; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.IntentFilter; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiInfo; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.wifi.WifiManager; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Handler; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Message; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemClock; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.PhoneStateListener; 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.ServiceState; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.telephony.TelephonyManager; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.Phone; 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneFactory; 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.PhoneStateIntentReceiver; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.internal.telephony.TelephonyProperties; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport com.android.settings.R; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.lang.ref.WeakReference; 47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Display the following information 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Phone Number 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Roaming 53f9e024198d3b16454287888bd5d40fee23390d23Wink Saville * # Device Id (IMEI in GSM and MEID in CDMA) 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Network type 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Signal Strength 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Battery Strength : TODO 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Uptime 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # Awake Time 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * # XMPP/buzz/tickle status : TODO 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class Status extends PreferenceActivity { 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address"; 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_BT_ADDRESS = "bt_address"; 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_SERVICE_STATE_CHANGED = 300; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int EVENT_UPDATE_STATS = 500; 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private TelephonyManager mTelephonyManager; 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Phone mPhone = null; 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateIntentReceiver mPhoneStateReceiver; 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Resources mRes; 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mSignalStrength; 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mUptime; 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static String sUnknown; 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryStatus; 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mBatteryLevel; 82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Handler mHandler; 84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static class MyHandler extends Handler { 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private WeakReference<Status> mStatus; 87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public MyHandler(Status activity) { 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mStatus = new WeakReference<Status>(activity); 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void handleMessage(Message msg) { 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Status status = mStatus.get(); 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == null) { 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (msg.what) { 100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SIGNAL_STRENGTH_CHANGED: 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateSignalStrength(); 102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_SERVICE_STATE_CHANGED: 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ServiceState serviceState = status.mPhoneStateReceiver.getServiceState(); 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateServiceState(serviceState); 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case EVENT_UPDATE_STATS: 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project status.updateTimes(); 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000); 112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String action = intent.getAction(); 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int level = intent.getIntExtra("level", 0); 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int scale = intent.getIntExtra("scale", 100); 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryLevel.setSummary(String.valueOf(level * 100 / scale) + "%"); 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int plugType = intent.getIntExtra("plugged", 0); 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String statusString; 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (status == BatteryManager.BATTERY_STATUS_CHARGING) { 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_charging); 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (plugType > 0) { 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = statusString + " " + getString( 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (plugType == BatteryManager.BATTERY_PLUGGED_AC) 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ? R.string.battery_info_status_charging_ac 138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : R.string.battery_info_status_charging_usb); 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_discharging); 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_not_charging); 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (status == BatteryManager.BATTERY_STATUS_FULL) { 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_full); 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project statusString = getString(R.string.battery_info_status_unknown); 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryStatus.setSummary(statusString); 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDataConnectionStateChanged(int state) { 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateNetworkType(); 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler = new MyHandler(this); 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.device_info_status); 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryLevel = findPreference("battery_level"); 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mBatteryStatus = findPreference("battery_status"); 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mRes = getResources(); 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (sUnknown == null) { 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sUnknown = mRes.getString(R.string.device_info_default); 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhone = PhoneFactory.getDefaultPhone(); 180d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter // Note - missing in zaku build, be careful later... 181d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter mSignalStrength = findPreference("signal_strength"); 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime = findPreference("up_time"); 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 184f9e024198d3b16454287888bd5d40fee23390d23Wink Saville //NOTE "imei" is the "Device ID" since it represents the IMEI in GSM and the MEID in CDMA 185386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang if (mPhone.getPhoneName().equals("CDMA")) { 186386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang setSummaryText("meid_number", mPhone.getMeid()); 187386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang setSummaryText("min_number", mPhone.getCdmaMin()); 188386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang setSummaryText("prl_version", mPhone.getCdmaPrlVersion()); 189386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 190386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang // device is not GSM/UMTS, do not display GSM/UMTS features 191386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang getPreferenceScreen().removePreference(findPreference("imei")); 192386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang getPreferenceScreen().removePreference(findPreference("imei_sv")); 193386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } else { 194386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang setSummaryText("imei", mPhone.getDeviceId()); 195386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 196386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang setSummaryText("imei_sv", 197386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) 198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .getDeviceSoftwareVersion()); 199386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 200386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang // device is not CDMA, do not display CDMA features 201386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang getPreferenceScreen().removePreference(findPreference("prl_version")); 202386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang getPreferenceScreen().removePreference(findPreference("meid_number")); 203386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang getPreferenceScreen().removePreference(findPreference("min_number")); 204386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang } 205386278a338d740dce95b7fa1514662b0eb5683e4Chouting Zhang 206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("number", mPhone.getLine1Number()); 207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler); 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED); 210afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED); 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setWifiStatus(); 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setBtStatus(); 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.registerIntent(); 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateSignalStrength(); 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateServiceState(mPhone.getServiceState()); 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project updateDataState(); 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPhoneStateReceiver.unregisterIntent(); 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project unregisterReceiver(mBatteryInfoReceiver); 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mHandler.removeMessages(EVENT_UPDATE_STATS); 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 244afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param preference The key for the Preference item 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param property The system property to fetch 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param alt The default value, if the property doesn't exist 247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummary(String preference, String property, String alt) { 249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project findPreference(preference).setSummary( 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project SystemProperties.get(property, alt)); 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (RuntimeException e) { 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setSummaryText(String preference, String text) { 258d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if (TextUtils.isEmpty(text)) { 259d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter text = sUnknown; 260d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter } 261d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter // some preferences may be missing 262d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if (findPreference(preference) != null) { 263d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter findPreference(preference).setSummary(text); 264d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter } 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateNetworkType() { 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Whether EDGE, UMTS, etc... 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummary("network_type", TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, sUnknown); 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateDataState() { 273afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = mTelephonyManager.getDataState(); 274afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 275afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 276afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTED: 278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connected); 279afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 280afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_SUSPENDED: 281afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_suspended); 282afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 283afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_CONNECTING: 284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_connecting); 285afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case TelephonyManager.DATA_DISCONNECTED: 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_data_disconnected); 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("data_state", display); 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void updateServiceState(ServiceState serviceState) { 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int state = serviceState.getState(); 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String display = mRes.getString(R.string.radioInfo_unknown); 297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (state) { 299afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_IN_SERVICE: 300afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_in); 301afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 302afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_OUT_OF_SERVICE: 303afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_EMERGENCY_ONLY: 304afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_out); 305afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 306afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case ServiceState.STATE_POWER_OFF: 307afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project display = mRes.getString(R.string.radioInfo_service_off); 308afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 309afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 310afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("service_state", display); 312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (serviceState.getRoaming()) { 314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("roaming_state", mRes.getString(R.string.radioInfo_roaming_in)); 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("roaming_state", mRes.getString(R.string.radioInfo_roaming_not)); 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setSummaryText("operator_name", serviceState.getOperatorAlphaLong()); 319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateSignalStrength() { 322e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // TODO PhoneStateIntentReceiver is deprecated and PhoneStateListener 323e2a14e35aa525de6cbc0179c67ec971295f2db03Wink Saville // should probably used instead. 324ead6928894c5f63ba8751962d93987b412b4b209Wink Saville 325d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter // not loaded in some versions of the code (e.g., zaku) 326d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if (mSignalStrength != null) { 327d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter int state = 328d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter mPhoneStateReceiver.getServiceState().getState(); 329d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter Resources r = getResources(); 330d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter 331d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if ((ServiceState.STATE_OUT_OF_SERVICE == state) || 332d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter (ServiceState.STATE_POWER_OFF == state)) { 333d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter mSignalStrength.setSummary("0"); 334d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter } 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 336d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter int signalDbm = mPhoneStateReceiver.getSignalStrengthDbm(); 337afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 338d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if (-1 == signalDbm) signalDbm = 0; 339afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 340d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter int signalAsu = mPhoneStateReceiver.getSignalStrength(); 341afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 342d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter if (-1 == signalAsu) signalAsu = 0; 343d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter 344d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter mSignalStrength.setSummary(String.valueOf(signalDbm) + " " 345d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter + r.getString(R.string.radioInfo_display_dbm) + " " 346d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter + String.valueOf(signalAsu) + " " 347d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter + r.getString(R.string.radioInfo_display_asu)); 348d166402fc3421dcb58aa45ecf08e29b590b7d4a7Mike Ritter } 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 350afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setWifiStatus() { 352afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 353afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 354afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 355afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference wifiMacAddressPref = findPreference(KEY_WIFI_MAC_ADDRESS); 356afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); 357afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 358afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 359afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 360afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 361afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void setBtStatus() { 362afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project BluetoothDevice bluetooth = (BluetoothDevice) getSystemService(BLUETOOTH_SERVICE); 363afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference btAddressPref = findPreference(KEY_BT_ADDRESS); 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (bluetooth == null) { 366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // device not BT capable 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().removePreference(btAddressPref); 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null; 370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project btAddressPref.setSummary(!TextUtils.isEmpty(address) ? address 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project : getString(R.string.status_unavailable)); 372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 375afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void updateTimes() { 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long at = SystemClock.uptimeMillis() / 1000; 377afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long ut = SystemClock.elapsedRealtime() / 1000; 378afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project long st = ut - at; 379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (ut == 0) { 381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ut = 1; 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 383afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUptime.setSummary(convert(ut)); 385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String pad(int n) { 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (n >= 10) { 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return String.valueOf(n); 390afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return "0" + String.valueOf(n); 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String convert(long t) { 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int s = (int)(t % 60); 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int m = (int)((t / 60) % 60); 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int h = (int)((t / 3600)); 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return h + ":" + pad(m) + ":" + pad(s); 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 403