npm stats
  • Search
  • About
  • Repo
  • Sponsor
  • more
    • Search
    • About
    • Repo
    • Sponsor

Made by Antonio Ramirez

bare-wifi-android

0.1.5

@GitHub Actions

npmHomeRepoSnykSocket
Downloads:5
$ npm install bare-wifi-android
DailyWeeklyMonthlyYearly

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:

  1. Multicast lock — Android drops multicast packets by default to save battery. Acquiring a WifiManager.MulticastLock tells the OS to let them through.
  2. WiFi interface IP — socket.addMembership needs the local IP of the WiFi interface to join the right multicast group. This finds it via getifaddrs on the wlan0 interface.

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 --link

Replace arm64 with arm, x64, or ia32 for other Android targets.

License

Apache-2.0