私のアプリケーションでは、ADB over WiFi がいつ有効または無効になったかを監視したいと考えています。これには BroadcastIntent がないように見えるので、これのステータスを監視する方法がわかりません。
これを行う方法をお勧めしますか?私が遭遇した唯一の方法は、数秒ごとにポーリングし、シェルを介して adbd が実行されているかどうかを確認することです。これは恐ろしく、恐ろしく非効率的で下品に思えます。
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");
}
}
});