java - 如何判断 ADB 是否检测到 android 设备?

标签 java adb

当平板电脑通过 USB 连接时,我正在使用 ADB 将文件从我的 java 应用程序推送到平板电脑。我希望能够通过 ADB 检测设备是否通过 USB 连接。我用来推送文件的代码是:

public void wiredsync(){
        try {
            abdsourcesync = buildpath; 
            adbtabletsync = "/mnt/sdcard/test"; 
            System.out.println("Starting Sync via adb with command " + "adb" + " push "+ buildpath + " " + adbtabletsync);
                    Process process = Runtime.getRuntime().exec("adb" + " push "+ buildpath + " " + adbtabletsync);
                    InputStreamReader reader = new InputStreamReader(process.getInputStream());
                    Scanner scanner = new Scanner(reader);
                    scanner.close();
                } catch(IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    }//end wiredsync

如何修改此代码以判断平板电脑是否已连接?

感谢您的帮助。

安迪

最佳答案

通过使用 Eclipse 插件也使用的 ddmlib.jar,您可以监视设备连接/断开事件。 ddmlib 通常位于 Android SDK 的 tools/lib 目录中。但是没有关于如何使用它的官方文档。下面是代码示例。您必须包含 ddmlib.jar 并根据您的环境更改 adb 位置。

import java.io.IOException;

import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
import com.android.ddmlib.IDevice;

public class Main {

    public static void main(String[] args) throws IOException {
        AndroidDebugBridge.init(false);

        AndroidDebugBridge debugBridge = AndroidDebugBridge.createBridge("D:\\android-sdk\\platform-tools\\adb.exe", true);
        if (debugBridge == null) {
            System.err.println("Invalid ADB location.");
            System.exit(1);
        }

        AndroidDebugBridge.addDeviceChangeListener(new IDeviceChangeListener() {

            @Override
            public void deviceChanged(IDevice device, int arg1) {
                // not implement
            }

            @Override
            public void deviceConnected(IDevice device) {
                System.out.println(String.format("%s connected", device.getSerialNumber()));
            }

            @Override
            public void deviceDisconnected(IDevice device) {
                System.out.println(String.format("%s disconnected", device.getSerialNumber()));

            }

        });

        System.out.println("Press enter to exit.");
        System.in.read();
    }
}

关于java - 如何判断 ADB 是否检测到 android 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17381324/

相关文章:

java - 为什么 Gradle 将测试失败的构建标记为成功?

java - 如何在 Java 日志记录中将不同的日志级别发送到不同的文件/输出?

android - 亚行截图: not found?

android - adb 无法识别 Samsung Note II 和 Note 10.1

android - 如何在禁用 USB 调试时使用 ADB 或任何其他方式打开 wifi

java - 如何在执行时更改log4j2中的日志路径

java - 更正输入文件以读取每一行

java - 列出所有未报告的异常(包括父类(super class)声明异常的异常)

android - 为什么我在 Eclipse 的 DDMS 透视模式下看不到我的 android 设备?

adb 命令没有列出我的设备