Skip to content

w2sv/WiFi-Widget

Repository files navigation

    WiFi Widget

F-Droid GitHub release (latest by date including pre-releases)

GitHub code size in bytes Check & Assemble Debug


Android app providing a fully configurable widget for the monitoring of your WiFi connection details.


    Where to get it

Get it on Google Play Download from F-Droid Download from IzzyOnDroid Get it on GitHub

    Features

In-App

  • Neat Material 3 Design
  • Configurable theme:
    • Light / dark
    • Dynamic / static colors
    • AMOLED black
  • Adaptive layouts for landscape & portrait mode
  • Live WiFi Status display with property copy-to-clipboard functionality on click

Widget

  • Property copy-to-clipboard functionality on click
  • Configuration options:
    • Appearance:
      • Size: from 2x1 to fullscreen
      • Light/dark theme with static/dynamic, or entirely custom colors
      • Background opacity
      • Font size
      • Property value alignment (left | right)
    • Displayed properties:
      • Basic Info: SSID, BSSID, Frequency, Channel, Link Speed, RSSI, Signal Strength, Standard, WiFi Generation, Security Protocol
      • IP Addresses:
        • Types: Loopback, Site Local, Link Local, Unique Local, Multicast, Global Unicast, Public (via api.ipify.org)
        • Options: IPv4, IPv6, or both; show prefix lengths (IPv4/IPv6) and subnet masks (IPv4)
      • Network Details: Gateway, DNS, DHCP, NAT64 Prefix
      • Location Info (via ip-api.com):
        • Region: Zip Code, District, City, Region, Country, Continent
      • Other: GPS Location, ASN, ISP
    • Property appearance order
    • Bottom bar elements:
      • Last refresh date time
      • Buttons:
        • Refresh data
        • Open WiFi settings
        • Open widget settings
    • Automatic data refreshing:
      • Interval: between 15 min and 24h
      • Whether to refresh on low battery

    Tech Stack

  • Kotlin only
  • Jetpack Compose for in-app UI, xml & RemoteViews for widget UI
  • Jetpack Navigation 3
  • Coroutines & flows
  • Dagger-Hilt for dependency injection
  • OkHttp for network requests, kotlinx serialization for JSON parsing
  • Proto & Preferences data storage
  • JUnit 4, mockito, robolectric & turbine for unit testing
  • JUnit 4 Compose android (instrumented) testing
  • Androidx Macro benchmarking & baseline profile generation with app-specific usage journey, implemented with UI Automator

    Architecture

  • Multi-modular build
  • Gradle Convention plugins for gradle code reuse whilst keeping modules independent from one another
  • Clean architecture (or however you wanna call it), with the UI and data layers depending on the domain layer, which exposes the data model and repository interfaces:

    Credits

Logo foreground by Hilmy Abiyyu Asad taken from here, where it is licensed under Creative Commons(Attribution 3.0 unported).

    Donations

Buy Me A Coffee

    License

GPL-3.0 License © w2sv [2022 - Present]

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •