我如何监控何时通过WiFi切换ADB?

时间:2013-10-19 10:25:59

标签: java android

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

您会推荐一种方法吗?我遇到的唯一方法是每隔几秒钟轮询一次,然后通过shell查看adbd运行的位置。这看起来非常可怕,效率低下且非常糟糕。

2 个答案:

答案 0 :(得分:0)

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

adb shell getprop service.adb.tcp.port

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

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

答案 1 :(得分:0)

可以通过添加ContentOberserver来监控设置来完成。默认情况下,ADB在端口5555上运行,并且在未启用时通常设置为-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");
                }
            }

});