From 5542fe492293223a81e604a49aa6fa55b1719847 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Thu, 14 May 2009 18:19:52 -0700 Subject: Make the ddmlib API use IDevice instead of Device Device is now private. All the API is using IDevice. Updated ddms, ADT, hierarchyviewer and other tools that relied on ddmlib. --- .../com/android/eventanalyzer/EventAnalyzer.java | 108 ++++++++++----------- 1 file changed, 54 insertions(+), 54 deletions(-) (limited to 'eventanalyzer') diff --git a/eventanalyzer/src/com/android/eventanalyzer/EventAnalyzer.java b/eventanalyzer/src/com/android/eventanalyzer/EventAnalyzer.java index c520784..11444ec 100644 --- a/eventanalyzer/src/com/android/eventanalyzer/EventAnalyzer.java +++ b/eventanalyzer/src/com/android/eventanalyzer/EventAnalyzer.java @@ -17,7 +17,7 @@ package com.android.eventanalyzer; import com.android.ddmlib.AndroidDebugBridge; -import com.android.ddmlib.Device; +import com.android.ddmlib.IDevice; import com.android.ddmlib.Log; import com.android.ddmlib.Log.ILogOutput; import com.android.ddmlib.Log.LogLevel; @@ -42,19 +42,19 @@ import java.util.Set; import java.util.TreeMap; /** - * Connects to a device using ddmlib and analyze its event log. + * Connects to a device using ddmlib and analyze its event log. */ public class EventAnalyzer implements ILogListener { - + private final static int TAG_ACTIVITY_LAUNCH_TIME = 30009; private final static char DATA_SEPARATOR = ','; private final static String CVS_EXT = ".csv"; private final static String TAG_FILE_EXT = ".tag"; //$NON-NLS-1$ - + private EventLogParser mParser; - private TreeMap> mLaunchMap = new TreeMap>(); - + private TreeMap> mLaunchMap = new TreeMap>(); + String mInputTextFile = null; String mInputBinaryFile = null; String mInputDevice = null; @@ -65,47 +65,47 @@ public class EventAnalyzer implements ILogListener { public static void main(String[] args) { new EventAnalyzer().run(args); } - + private void run(String[] args) { if (args.length == 0) { printUsageAndQuit(); } - + int index = 0; do { String argument = args[index++]; if ("-s".equals(argument)) { checkInputValidity("-s"); - + if (index == args.length) { printUsageAndQuit(); } - + mInputDevice = args[index++]; } else if ("-fb".equals(argument)) { checkInputValidity("-fb"); - + if (index == args.length) { printUsageAndQuit(); } - + mInputBinaryFile = args[index++]; } else if ("-ft".equals(argument)) { checkInputValidity("-ft"); - + if (index == args.length) { printUsageAndQuit(); } - + mInputTextFile = args[index++]; } else if ("-F".equals(argument)) { checkInputValidity("-F"); - + if (index == args.length) { printUsageAndQuit(); } - + mInputFolder = args[index++]; } else if ("-t".equals(argument)) { if (index == args.length) { @@ -156,17 +156,17 @@ public class EventAnalyzer implements ILogListener { } else if (mInputDevice != null) { parseLogFromDevice(); } - + // analyze the data gathered by the parser methods analyzeData(); } catch (IOException e) { e.printStackTrace(); } } - + /** * Parses a binary event log file located at {@link #mInputBinaryFile}. - * @throws IOException + * @throws IOException */ private void parseBinaryLogFile() throws IOException { mParser = new EventLogParser(); @@ -183,13 +183,13 @@ public class EventAnalyzer implements ILogListener { printAndExit("Failed to get event tags from " + tagFile, false /* terminate*/); } } - + LogReceiver receiver = new LogReceiver(this); byte[] buffer = new byte[256]; - + FileInputStream fis = new FileInputStream(mInputBinaryFile); - + int count; while ((count = fis.read(buffer)) != -1) { receiver.parseNewData(buffer, 0, count); @@ -230,10 +230,10 @@ public class EventAnalyzer implements ILogListener { private void parseLogFromDevice() throws IOException { // init the lib AndroidDebugBridge.init(false /* debugger support */); - + try { AndroidDebugBridge bridge = AndroidDebugBridge.createBridge(); - + // we can't just ask for the device list right away, as the internal thread getting // them from ADB may not be done getting the first list. // Since we don't really want getDevices() to be blocking, we wait here manually. @@ -245,7 +245,7 @@ public class EventAnalyzer implements ILogListener { } catch (InterruptedException e) { // pass } - + // let's not wait > 10 sec. if (count > 100) { printAndExit("Timeout getting device list!", true /* terminate*/); @@ -253,21 +253,21 @@ public class EventAnalyzer implements ILogListener { } // now get the devices - Device[] devices = bridge.getDevices(); - - for (Device device : devices) { + IDevice[] devices = bridge.getDevices(); + + for (IDevice device : devices) { if (device.getSerialNumber().equals(mInputDevice)) { grabLogFrom(device); return; } } - + System.err.println("Could not find " + mInputDevice); } finally { AndroidDebugBridge.terminate(); } } - + /** * Parses the log files located in the folder, and its sub-folders. * @param folderPath the path to the folder. @@ -278,14 +278,14 @@ public class EventAnalyzer implements ILogListener { printAndExit(String.format("%1$s is not a valid folder", folderPath), false /* terminate */); } - + String[] files = f.list(new FilenameFilter() { public boolean accept(File dir, String name) { name = name.toLowerCase(); return name.endsWith(".tag") == false; } }); - + for (String file : files) { try { f = new File(folderPath + File.separator + file); @@ -300,18 +300,18 @@ public class EventAnalyzer implements ILogListener { } } - private void grabLogFrom(Device device) throws IOException { + private void grabLogFrom(IDevice device) throws IOException { mParser = new EventLogParser(); if (mParser.init(device) == false) { printAndExit("Failed to get event-log-tags from " + device.getSerialNumber(), true /* terminate*/); } - + LogReceiver receiver = new LogReceiver(this); device.runEventLogService(receiver); } - + /** * Analyze the data and writes it to {@link #mOutputFile} * @throws IOException @@ -326,23 +326,23 @@ public class EventAnalyzer implements ILogListener { writer = new BufferedWriter(new FileWriter(mOutputFile)); StringBuilder builder = new StringBuilder(); - + // write the list of launch start. One column per activity. Set activities = mLaunchMap.keySet(); - + // write the column headers. for (String activity : activities) { builder.append(activity).append(DATA_SEPARATOR); } writer.write(builder.append('\n').toString()); - + // loop on the activities and write their values. boolean moreValues = true; int index = 0; while (moreValues) { moreValues = false; builder.setLength(0); - + for (String activity : activities) { // get the activity list. ArrayList list = mLaunchMap.get(activity); @@ -353,33 +353,33 @@ public class EventAnalyzer implements ILogListener { builder.append(DATA_SEPARATOR); } } - + // write the line. if (moreValues) { writer.write(builder.append('\n').toString()); } - + index++; } - + // write per-activity stats. for (String activity : activities) { builder.setLength(0); builder.append(activity).append(DATA_SEPARATOR); - + // get the activity list. ArrayList list = mLaunchMap.get(activity); - + // sort the list Collections.sort(list); - + // write min/max builder.append(list.get(0).longValue()).append(DATA_SEPARATOR); builder.append(list.get(list.size()-1).longValue()).append(DATA_SEPARATOR); - + // write median value builder.append(list.get(list.size()/2).longValue()).append(DATA_SEPARATOR); - + // compute and write average long total = 0; // despite being encoded on a long, the values are low enough that // a Long should be enough to compute the total @@ -387,7 +387,7 @@ public class EventAnalyzer implements ILogListener { total += value.longValue(); } builder.append(total / list.size()).append(DATA_SEPARATOR); - + // finally write the data. writer.write(builder.append('\n').toString()); } @@ -412,7 +412,7 @@ public class EventAnalyzer implements ILogListener { // parse and process the entry data. processEvent(mParser.parse(entry)); } - + private void processEvent(EventContainer event) { if (event != null && event.mTag == TAG_ACTIVITY_LAUNCH_TIME) { // get the activity name @@ -434,12 +434,12 @@ public class EventAnalyzer implements ILogListener { private void addLaunchTime(String name, Long value) { ArrayList list = mLaunchMap.get(name); - + if (list == null) { list = new ArrayList(); mLaunchMap.put(name, list); } - + list.add(value); } @@ -469,11 +469,11 @@ public class EventAnalyzer implements ILogListener { System.out.println("Options:"); System.out.println(" -t The path to tag file to use in case the one associated with"); System.out.println(" the source is missing"); - + System.exit(1); } - - + + private static void printAndExit(String message, boolean terminate) { System.out.println(message); if (terminate) { -- cgit v1.1