package icon

ylih - your life in headphones

Track how many hours each pair of headphones lasts. Offline, forever, private
New in version 1.1.3
• Build and packaging changes only. Nothing changes on screen.
Headphones die. Before they do, ylih answers the only question that really matters about a pair: how many hours did you get out of them?

Every time your headphones connect, ylih writes down when. Every time they disconnect, it writes down when. That is the whole idea — and because a connection is just two timestamps, the app does not need to run in the background to do it.

WHAT IT TRACKS

• Lifetime hours per physical pair. When a pair dies, retire it — the total freezes, and the next pair of the same model starts again at zero as generation 2. Your old numbers are never mixed in with the new ones.
• Every session, kept permanently: connected at, disconnected at, and why it ended.
• Playback time (optional): how much of that connected time was actually playing audio, so "worn around my neck" doesn't count as listening.
• Cost per hour, if you enter what you paid. It is a satisfying number to watch fall.

TWO TRACKING MODES

Bluetooth only — the default. Nothing of the app runs, nothing sits in your notification shade, and there is no battery cost, because Android delivers connection events to the app even while it is closed.

Detailed tracking — optional. Adds wired and USB headphones, and measures playback versus connected time. It needs one silent, minimum-priority notification, because Android only reports wired plug events to an app that is already running. That, and nothing else, is why the notification exists.

Bluetooth is tracked either way.

NUMBERS YOU CAN TRUST YEARS LATER

Long-term totals are worthless if a crash or a reboot quietly adds twelve hours. So:

• A session left open by a reboot or a crash is closed at its last known heartbeat, never later than the moment the phone booted. Time the phone spent switched off is never counted.
• If your headphones are still connected after a reboot, a fresh session starts rather than the old one being stretched across the gap.
• Sessions are heartbeated while open, so the damage from a missed disconnect is bounded.

PRIVATE BY CONSTRUCTION

ylih has no internet permission. There are no accounts, no analytics, no ads, and no tracking. Everything lives in a database on your phone — the only thing that can copy it off the device is Android's own backup, if you have that switched on.

Settings → Export writes your whole history as readable JSON, and Import restores it, so moving to a new phone never costs you your numbers.

PERMISSIONS

• Nearby devices (Bluetooth): required to receive connection events and read a headset's name. Without it, Bluetooth tracking cannot work at all.
• Notifications: only for the detailed-tracking notification.
• Run at startup: to close sessions the shutdown never reported.

Open source under the MIT licence.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 1.1.3 (5) suggested Added on Aug 14, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 6.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • pair with Bluetooth devices
      Allows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices.
    • connect to paired Bluetooth devices
      Allows the app to connect to paired Bluetooth devices
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "connectedDevice"
      Allows the app to make use of foreground services with the type "connectedDevice"
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • it.eldavo.ylih.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 3.5 MiB PGP Signature | Build Log