diff options
author | 2025-03-17 20:31:13 -0700 | |
---|---|---|
committer | 2025-03-17 20:31:13 -0700 | |
commit | 28e63e5444fd63993c40553c101eed28bc9241aa (patch) | |
tree | 2d6d55d656c9c967698b2726835e713af013e83e | |
parent | 4a545ed1bb853133e0618930b799f4d281047e79 (diff) | |
parent | 16229490540ad532db38708544e589aea8c5dcc4 (diff) |
Merge "Adb wifi acquires multicast lock" into main
-rw-r--r-- | services/core/java/com/android/server/adb/AdbService.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/adb/AdbService.java b/services/core/java/com/android/server/adb/AdbService.java index d12a0a2a1e00..c338a1ef15c9 100644 --- a/services/core/java/com/android/server/adb/AdbService.java +++ b/services/core/java/com/android/server/adb/AdbService.java @@ -32,6 +32,7 @@ import android.debug.IAdbTransport; import android.debug.PairDevice; import android.hardware.usb.UsbManager; import android.net.Uri; +import android.net.wifi.WifiManager; import android.os.Binder; import android.os.IBinder; import android.os.ParcelFileDescriptor; @@ -192,6 +193,7 @@ public class AdbService extends IAdbManager.Stub { @Override public void onChange(boolean selfChange, @NonNull Uri uri, @UserIdInt int userId) { + Slog.d("AdbSettingsObserver", "onChange " + uri.toString()); if (mAdbUsbUri.equals(uri)) { boolean shouldEnable = (Settings.Global.getInt(mContentResolver, Settings.Global.ADB_ENABLED, 0) > 0); @@ -417,6 +419,28 @@ public class AdbService extends IAdbManager.Stub { } } + private WifiManager.MulticastLock mAdbMulticastLock = null; + + private void acquireMulticastLock() { + if (mAdbMulticastLock == null) { + WifiManager wifiManager = (WifiManager) + mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + mAdbMulticastLock = wifiManager.createMulticastLock("AdbMulticastLock"); + } + + if (!mAdbMulticastLock.isHeld()) { + mAdbMulticastLock.acquire(); + Slog.d(TAG, "Acquired multicast lock"); + } + } + + private void releaseMulticastLock() { + if (mAdbMulticastLock != null && mAdbMulticastLock.isHeld()) { + mAdbMulticastLock.release(); + Slog.d(TAG, "Released multicast lock"); + } + } + private void setAdbEnabled(boolean enable, byte transportType) { Slog.d(TAG, "setAdbEnabled(" + enable + "), mIsAdbUsbEnabled=" + mIsAdbUsbEnabled + ", mIsAdbWifiEnabled=" + mIsAdbWifiEnabled + ", transportType=" + transportType); @@ -428,9 +452,11 @@ public class AdbService extends IAdbManager.Stub { if (mIsAdbWifiEnabled) { // Start adb over WiFi. SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); + acquireMulticastLock(); } else { // Stop adb over WiFi. SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "0"); + releaseMulticastLock(); } } else { // No change |