diff options
| author | 2025-03-17 20:40:40 -0700 | |
|---|---|---|
| committer | 2025-03-17 20:40:40 -0700 | |
| commit | 4bb9796b6860abed0be2a31b3795b8ea1c2a28c6 (patch) | |
| tree | 2d6d55d656c9c967698b2726835e713af013e83e | |
| parent | e85351f15693c7e356389e8190c522760c88a384 (diff) | |
| parent | 28e63e5444fd63993c40553c101eed28bc9241aa (diff) | |
Merge "Adb wifi acquires multicast lock" into main am: 28e63e5444
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3509097
Change-Id: Id17b823b32340840a3a9cf4764378d8ed2f336cb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -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 |