Java
Need help with device?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
cosysoft

Description

Android Device API Based on ddmlib

211 Stars 63 Forks Apache License 2.0 50 Commits 3 Opened issues

Services available

Need anything else?

“[device] is being sponsored by the following tool; please help to support us by taking a look and signing up to a free trial” <!-- GitAds -->

Android Device API Based on ddmlib

A lot of code quote from selendroid,but we will foucs on simplify ddmlib's usage

device-keeper

A distributed android device monitor system based on device-api

Quick Start

You require the following to build:

And be sure that JAVAHOME,ANDROIDHOME at your environment path.

Plug a android device via usb or boot an emulator

git clone https://github.com/cosysoft/device.git
cd device/device-keeper
bower install

cd .. gradle bootRun

Open http://localhost:8080/keeper in your browser

device-api

Focus on stabilized android device operation via Android Debug Bridge

Quick Start

Download

Maven

xml

        com.github.cosysoft
        device-api
        0.9.3

Gradle
groovy
dependencies {
        compile 'com.github.cosysoft:device-api:0.9.3'
}

Take Devices

TreeSet devices = AndroidDeviceStore.getInstance()
        .getDevices();

for (AndroidDevice d : devices) { System.out.println(d.getSerialNumber()); } AndroidDevice device = devices.pollFirst(); System.out.println(device.getName());

Screenshot

BufferedImage image = device.takeScreenshot();
String imagePath = new File(System.getProperty("java.io.tmpdir"),
        "screenshot.png").getAbsolutePath();
ImageUtils.writeToFile(image, imagePath);

Install/Uninstall App

AndroidApp app = new DefaultAndroidApp(new File(
        "d:\\uat\\com.android.chrome.apk"));
device.install(app);
if (device.isInstalled(app)) {
    device.uninstall(app);
}

LogCat with custom filter

final LogCatFilter filter = new LogCatFilter("", "", "com.android", "",
        "", LogLevel.WARN);
final LogCatListener lcl = new LogCatListener() {
    @Override
    public void log(List msgList) {
        for (LogCatMessage msg : msgList) {
            if (filter.matches(msg)) {
                System.out.println(msg);
            }
        }
    }
};

device.addLogCatListener(lcl); Thread.sleep(60000);

Monitor

Ddmlib can monitor one app's cpu/heap/threads and much more,but we need list running client first.

List running client for app

@Test
public void testListClients() {

Client[] clients = device.getAllClient(); for (Client client : clients) { ClientData clientData = client.getClientData(); System.out.println(clientData.getClientDescription() + " " + clientData.getPid()); } }

List selected app threads

@Test
public void testListTheads() {

Client runningApp = device.getClientByAppName("com.android.calendar");

ThreadInfo[] threads = runningApp.getClientData().getThreads();

for (int i = 0; i < threads.length; i++) { System.out.println(threads[i].getThreadName() + " at " + threads[i].getStatus()); } }

License

The Apache Software License, Version 2.0

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.