FileDocCategorySizeDatePackage
DumpEventLog.javaAPI DocAndroid 1.5 API4797Wed May 06 22:41:10 BST 2009com.android.dumpeventlog

DumpEventLog

public class DumpEventLog extends Object
Connects to a device using ddmlib and dumps its event log as long as the device is connected.

Fields Summary
Constructors Summary
Methods Summary
private static voidgrabLogFrom(com.android.ddmlib.Device device, java.lang.String filePath)

        LogWriter writer = new LogWriter(filePath);
        LogReceiver receiver = new LogReceiver(writer);
        writer.setReceiver(receiver);

        device.runEventLogService(receiver);
        
        writer.done();
    
public static voidmain(java.lang.String[] args)

        if (args.length != 2) {
            System.out.println("Usage: dumpeventlog <device s/n> <filepath>");
            return;
        }
        
        // redirect the log output to /dev/null
        Log.setLogOutput(new ILogOutput() {
            public void printAndPromptLog(LogLevel logLevel, String tag, String message) {
                // pass
            }

            public void printLog(LogLevel logLevel, String tag, String message) {
                // pass
            }
        });
        
        // 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.
            int count = 0;
            while (bridge.hasInitialDeviceList() == false) {
                try {
                    Thread.sleep(100);
                    count++;
                } catch (InterruptedException e) {
                    // pass
                }
                
                // let's not wait > 10 sec.
                if (count > 100) {
                    System.err.println("Timeout getting device list!");
                    return;
                }
            }

            // now get the devices
            Device[] devices = bridge.getDevices();
            
            for (Device device : devices) {
                if (device.getSerialNumber().equals(args[0])) {
                    try {
                        grabLogFrom(device, args[1]);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return;
                }
            }
            
            System.err.println("Could not find " + args[0]);
        } finally {
            AndroidDebugBridge.terminate();
        }