bare-wifi-android
v0.1.5
Published
Android WifiManager bindings for the Bare runtime — multicast lock and WiFi interface IP
Downloads
611
Readme
bare-wifi-android
⚠️ Experimental Claude generated prototype
Android WifiManager bindings for the Bare runtime.
Provides two things needed for mDNS / multicast UDP to work on Android:
- Multicast lock — Android drops multicast packets by default to save battery. Acquiring a
WifiManager.MulticastLocktells the OS to let them through. - WiFi interface IP —
socket.addMembershipneeds the local IP of the WiFi interface to join the right multicast group. This finds it viagetifaddrson thewlan0interface.
This is an Android-only native addon. Use an import map to gate it to Android in cross-platform apps.
Usage
const wifiManager = require('bare-wifi-android')
// Acquire the multicast lock so UDP multicast packets are delivered.
// No-op on non-Android. The Android application context is obtained
// automatically via ActivityThread.currentApplication().
wifiManager.acquireMulticastLock('my-app-mdns')
// Find the WiFi interface IP to pass to socket.addMembership.
const wifiIP = wifiManager.getWifiIP() // e.g. "192.168.1.42" or null
// ... run mDNS discovery ...
// Release when done.
wifiManager.releaseMulticastLock()With bare-mdns-discovery
const wifiManager = require('bare-wifi-android')
const { Discovery } = require('bare-mdns-discovery')
wifiManager.acquireMulticastLock('my-app-mdns')
const discovery = new Discovery({ service: 'companion-link' })
// Pass wifiIP into addMembership inside Discovery._open() — requires a fork
// or patch of bare-mdns-discovery to accept a multicastInterface option.API
acquireMulticastLock([tag])
Acquires a WifiManager.MulticastLock with the given tag string (default "bare-mdns"). Idempotent — acquiring a second lock releases the previous one. No-op on non-Android.
releaseMulticastLock()
Releases the currently held lock. No-op if no lock is held or on non-Android.
getWifiIP()
Returns the IPv4 address of the wlan0 WiFi interface as a string, or null if not connected. Requires NDK API 24+.
Building
npm i -g bare-make
bare-make generate --platform android --arch arm64 -D ANDROID_PLATFORM=android-34 -D ANDROID_STL=c++_shared
bare-make build
bare-make install --linkReplace arm64 with arm, x64, or ia32 for other Android targets.
License
Apache-2.0
