Skip to content

Commit

Permalink
Fix scanning for server
Browse files Browse the repository at this point in the history
  • Loading branch information
badaix committed Jan 10, 2021
1 parent 2e4ea0b commit 266e191
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
1 change: 1 addition & 0 deletions Snapcast/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>

<application
android:allowBackup="true"
Expand Down
15 changes: 15 additions & 0 deletions Snapcast/src/main/java/de/badaix/snapcast/utils/NsdHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import android.content.Context;
import android.net.nsd.NsdManager;
import android.net.nsd.NsdServiceInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.util.Log;

Expand All @@ -46,6 +47,7 @@ public class NsdHelper {
private android.net.nsd.NsdManager.ResolveListener mResolveListener = null;
private Context mContext;
private NsdHelperListener listener = null;
private WifiManager.MulticastLock multicastLock = null;

private NsdHelper(Context context) {
mContext = context;
Expand All @@ -65,6 +67,15 @@ public void startListening(String serviceType, String serviceName, NsdHelperList
this.listener = listener;
this.serviceName = serviceName;
this.serviceType = serviceType;

// https://stackoverflow.com/questions/53615125/nsdmanager-discovery-does-not-work-on-android-9
WifiManager wifi = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
if (wifi != null) {
multicastLock = wifi.createMulticastLock("multicastLock");
multicastLock.setReferenceCounted(true);
multicastLock.acquire();
}

initializeResolveListener();
initializeDiscoveryListener();
mNsdManager = (NsdManager) mContext.getSystemService(Context.NSD_SERVICE);
Expand All @@ -80,6 +91,10 @@ public void stopListening() {
}
mDiscoveryListener = null;
}
if (multicastLock != null) {
multicastLock.release();
multicastLock = null;
}
}

private void initializeResolveListener() {
Expand Down

0 comments on commit 266e191

Please sign in to comment.