在我的應用程序中,我想要監視何時啓用或禁用了基於WiFi的ADB。似乎沒有這樣的BroadcastIntent,所以我不知道如何監視這個狀態。如何通過WiFi切換ADB時的狀態?
你會推薦一種方法嗎?我遇到的唯一方法是輪詢每隔幾秒鐘,並通過shell,檢查adbd在哪裏運行或不運行。這似乎是可怕的,可怕的低效率和kludgey。
在我的應用程序中,我想要監視何時啓用或禁用了基於WiFi的ADB。似乎沒有這樣的BroadcastIntent,所以我不知道如何監視這個狀態。如何通過WiFi切換ADB時的狀態?
你會推薦一種方法嗎?我遇到的唯一方法是輪詢每隔幾秒鐘,並通過shell,檢查adbd在哪裏運行或不運行。這似乎是可怕的,可怕的低效率和kludgey。
可以通過添加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");
}
}
});
還有就是確定亞行端口屬性可以是監聽:
adb shell getprop service.adb.tcp.port
但apperently沒有被通知的性質變化的android系統內的方法:http://rxwen.blogspot.fr/2010/01/android-property-system.html
你仍然需要輪詢它以獲得更改的通知,但這可能更容易。儘管如此,設置此端口並不意味着adb正在通過無線網絡運行。雖然有機會。