2

在我的应用程序中,我想监控 ADB over WiFi 何时启用或禁用。似乎没有广播意图,所以我不知道如何监控它的状态。

你会推荐一种方法吗?我遇到的唯一方法是每隔几秒钟轮询一次,并通过 shell 检查 adbd 是否在哪里运行。这似乎是可怕的、可怕的低效和笨拙的。

4

2 回答 2

0

有一个属性可以确定 adb 可能正在侦听的端口:

adb shell getprop service.adb.tcp.port

但显然没有办法通知android系统内的属性更改:http ://rxwen.blogspot.fr/2010/01/android-property-system.html

您仍然需要对其进行轮询以获得更改通知,但这可能更容易。尽管如此,设置此端口并不意味着 adb 正在通过 wifi 运行。不过也有机会。

于 2013-10-31T15:42:03.680 回答
0

可以通过添加一个ContentOberserver监控设置来完成。ADB5555默认在端口上运行,通常设置-1为未启用时。

getApplicationContext().getContentResolver().registerContentObserver(
    Settings.Secure.getUriFor("adb_port"), false, 
        new ContentObserver() {

            @Override
            public void onChange(boolean selfChange) {
                super.onChange(selfChange);
                Integer intPort = Settings.Secure.getInt(getContentResolver(), "adb_port", -1);
                if (intPort > -1)  {
                    System.out.println("Enabled");
                } else {
                    System.out.println("Disabled");
                }
            }

});
于 2014-03-17T11:20:38.707 回答