/* */ package com.android.internal.os; /* */ /* */ import android.content.Context; /* */ import android.content.res.Resources; /* */ import android.content.res.XmlResourceParser; /* */ import com.android.internal.util.XmlUtils; /* */ import java.io.IOException; /* */ import java.util.ArrayList; /* */ import java.util.HashMap; /* */ import org.xmlpull.v1.XmlPullParserException; /* */ /* */ public class PowerProfile /* */ { /* */ public static final String POWER_NONE = "none"; /* */ public static final String POWER_CPU_IDLE = "cpu.idle"; /* */ public static final String POWER_CPU_AWAKE = "cpu.awake"; /* */ public static final String POWER_CPU_ACTIVE = "cpu.active"; /* */ public static final String POWER_WIFI_SCAN = "wifi.scan"; /* */ public static final String POWER_WIFI_ON = "wifi.on"; /* */ public static final String POWER_WIFI_ACTIVE = "wifi.active"; /* */ public static final String POWER_GPS_ON = "gps.on"; /* */ public static final String POWER_BLUETOOTH_ON = "bluetooth.on"; /* */ public static final String POWER_BLUETOOTH_ACTIVE = "bluetooth.active"; /* */ public static final String POWER_BLUETOOTH_AT_CMD = "bluetooth.at"; /* */ public static final String POWER_SCREEN_ON = "screen.on"; /* */ public static final String POWER_RADIO_ON = "radio.on"; /* */ public static final String POWER_RADIO_SCANNING = "radio.scanning"; /* */ public static final String POWER_RADIO_ACTIVE = "radio.active"; /* */ public static final String POWER_SCREEN_FULL = "screen.full"; /* */ public static final String POWER_AUDIO = "dsp.audio"; /* */ public static final String POWER_VIDEO = "dsp.video"; /* */ public static final String POWER_CPU_SPEEDS = "cpu.speeds"; /* */ public static final String POWER_BATTERY_CAPACITY = "battery.capacity"; /* 143 */ static final HashMap<String, Object> sPowerMap = new HashMap(); /* */ private static final String TAG_DEVICE = "device"; /* */ private static final String TAG_ITEM = "item"; /* */ private static final String TAG_ARRAY = "array"; /* */ private static final String TAG_ARRAYITEM = "value"; /* */ private static final String ATTR_NAME = "name"; /* */ /* */ public PowerProfile(Context context) /* */ { /* 154 */ if (sPowerMap.size() == 0) /* 155 */ readPowerValuesFromXml(context); /* */ } /* */ /* */ private void readPowerValuesFromXml(Context context) /* */ { /* 160 */ int id = edu.berkeley.cs.amplab.carat.android.R.xml.power_profile; /* 161 */ XmlResourceParser parser = context.getResources().getXml(id); /* 162 */ boolean parsingArray = false; /* 163 */ ArrayList array = new ArrayList(); /* 164 */ String arrayName = null; /* */ try /* */ { /* 167 */ XmlUtils.beginDocument(parser, "device"); /* */ while (true) /* */ { /* 170 */ XmlUtils.nextElement(parser); /* */ /* 172 */ String element = parser.getName(); /* 173 */ if (element == null) /* */ break; /* 175 */ if ((parsingArray) && (!element.equals("value"))) /* */ { /* 177 */ sPowerMap.put(arrayName, array.toArray(new Double[array.size()])); /* 178 */ parsingArray = false; /* */ } /* 180 */ if (element.equals("array")) { /* 181 */ parsingArray = true; /* 182 */ array.clear(); /* 183 */ arrayName = parser.getAttributeValue(null, "name"); /* 184 */ } else if ((element.equals("item")) || (element.equals("value"))) { /* 185 */ String name = null; /* 186 */ if (!parsingArray) name = parser.getAttributeValue(null, "name"); /* 187 */ if (parser.next() == 4) { /* 188 */ String power = parser.getText(); /* 189 */ double value = 0.0D; /* */ try { /* 191 */ value = Double.valueOf(power).doubleValue(); /* */ } catch (NumberFormatException nfe) { /* */ } /* 194 */ if (element.equals("item")) /* 195 */ sPowerMap.put(name, Double.valueOf(value)); /* 196 */ else if (parsingArray) { /* 197 */ array.add(Double.valueOf(value)); /* */ } /* */ } /* */ } /* */ } /* 202 */ if (parsingArray) /* 203 */ sPowerMap.put(arrayName, array.toArray(new Double[array.size()])); /* */ } /* */ catch (XmlPullParserException e) { /* 206 */ throw new RuntimeException(e); /* */ } catch (IOException e) { /* 208 */ throw new RuntimeException(e); /* */ } finally { /* 210 */ parser.close(); /* */ } /* */ } /* */ /* */ public double getAveragePower(String type) /* */ { /* 220 */ if (sPowerMap.containsKey(type)) { /* 221 */ Object data = sPowerMap.get(type); /* 222 */ if ((data instanceof Double[])) { /* 223 */ return ((Double[])(Double[])data)[0].doubleValue(); /* */ } /* 225 */ return ((Double)sPowerMap.get(type)).doubleValue(); /* */ } /* */ /* 228 */ return 0.0D; /* */ } /* */ /* */ public double getAveragePower(String type, int level) /* */ { /* 241 */ if (sPowerMap.containsKey(type)) { /* 242 */ Object data = sPowerMap.get(type); /* 243 */ if ((data instanceof Double[])) { /* 244 */ Double[] values = (Double[])(Double[])data; /* 245 */ if ((values.length > level) && (level >= 0)) /* 246 */ return values[level].doubleValue(); /* 247 */ if (level < 0) { /* 248 */ return 0.0D; /* */ } /* 250 */ return values[(values.length - 1)].doubleValue(); /* */ } /* */ /* 253 */ return ((Double)data).doubleValue(); /* */ } /* */ /* 256 */ return 0.0D; /* */ } /* */ /* */ public double getBatteryCapacity() /* */ { /* 266 */ return getAveragePower("battery.capacity"); /* */ } /* */ /* */ public int getNumSpeedSteps() /* */ { /* 274 */ Object value = sPowerMap.get("cpu.speeds"); /* 275 */ if ((value != null) && ((value instanceof Double[]))) { /* 276 */ return ((Double[])(Double[])value).length; /* */ } /* 278 */ return 1; /* */ } /* */ } /* Location: C:\Documents and Settings\Leo\My Documents\Downloads\android-4.0.3_r1.jar * Qualified Name: com.android.internal.os.PowerProfile * JD-Core Version: 0.6.0 */