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();
}