1
package com.android.ddmlib.use;

import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.Client;
import com.android.ddmlib.IDevice;
import com.android.hierarchyviewer.device.DeviceBridge;

public class DDMlibUse implements AndroidDebugBridge.IDeviceChangeListener, AndroidDebugBridge.IClientChangeListener{

 public static void main(String args[]) {

       DDMlibUse mlibUse = new DDMlibUse();

       AndroidDebugBridge.init(true);
       AndroidDebugBridge adb = AndroidDebugBridge.createBridge("adb",
                                false);
       adb.addClientChangeListener(mlibUse);
       adb.addDeviceChangeListener(mlibUse);
       for (;;) {

       }
 }

@Override
public void deviceConnected(IDevice dev) {
    // TODO Auto-generated method stub
    System.out.print("deviceConnected ... \n");
    System.out.print(dev.toString() + "\n");
    System.out.print(dev.getState() + "\n");
    System.out.println(dev.getClients().length);

}

@Override
public void deviceDisconnected(IDevice dev) {
    // TODO Auto-generated method stub
    System.out.print("deviceDisconnected ... \n");
    DeviceBridge.removeDeviceForward(dev);

}

@Override
public void deviceChanged(IDevice dev, int changeMask) {
    // TODO Auto-generated method stub
    System.out.print("deviceChanged ... \n");
    System.out.print(dev.toString() + "\n");
    System.out.print(dev.getState() + "\n");
    System.out.println(dev.getClients().length + "\n");
    System.out.println("changeMask " + changeMask + "\n");

}

@Override
public void clientChanged(Client client, int change_code) {
    // TODO Auto-generated method stub
    System.out.print("clientChanged ... \n");

}

}

その結果、デバイスは ON_LINE になりますが、getClients メソッドを呼び出すとクライアントの配列 [0] しか返されません。クライアントを取得できません。また、デバイスで新しいアプリを起動すると、「changeMask」が IDevice.CHANGE_CLIENT_LIST になることはありません。

手伝って頂けますか ?thx たくさん私の目的は、Hierarchyviewer や DDMS と同じように、デバイス上のどのアクティビティが前面にあるかを取得することです。

4

0 に答える 0