2013-10-19 46 views
2

在我的應用程序中,我想要監視何時啓用或禁用了基於WiFi的ADB。似乎沒有這樣的BroadcastIntent,所以我不知道如何監視這個狀態。如何通過WiFi切換ADB時的狀態?

你會推薦一種方法嗎?我遇到的唯一方法是輪詢每隔幾秒鐘,並通過shell,檢查adbd在哪裏運行或不運行。這似乎是可怕的,可怕的低效率和kludgey。

回答

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"); 
       } 
      } 

}); 
0

還有就是確定亞行端口屬性可以是監聽:

adb shell getprop service.adb.tcp.port 

但apperently沒有被通知的性質變化的android系統內的方法:http://rxwen.blogspot.fr/2010/01/android-property-system.html

你仍然需要輪詢它以獲得更改的通知,但這可能更容易。儘管如此,設置此端口並不意味着adb正在通過無線網絡運行。雖然有機會。