パッケージアイコン

ylih - ヘッドホンの中の人生

ヘッドホンの寿命を記録。オフライン、永久、プライベート
バージョン 1.3.0 の新しい機能
• ylih が 76 言語から 220 言語に対応しました。
• 統計画面で直近 30 日をグラフだけでなく数値でも一覧できます。
• 再生時間と接続時間の計測がより正確になりました。
• グラフと履歴の読み込みが速くなりました。
• アプリのアンインストール時に android がデータを保持できます。
• スクリーンリーダー対応を改善しました。
ヘッドホンはいつか壊れる。その前に、ylihが本当に大事な問いに答える。あのヘッドホンは何時間使えたのか?

ヘッドホンが接続されるたびに、ylihはその時刻を記録する。切断されるたびに、その時刻も記録する。それだけだ。接続とは2つの時刻にすぎないので、このアプリは記録のためにバックグラウンドで動き続ける必要がない。

記録する内容

・物理的なペアごとの総利用時間。ペアが壊れたら引退させる — 合計時間はそこで固定され、同じ機種の次のペアはまたゼロから、世代2として始まる。古い数字が新しい数字と混ざることは決してない。
・すべてのセッションを永久に保存:接続した時刻、切断した時刻、そして終わった理由。
・再生時間(任意):接続していた時間のうち、実際に音を再生していた時間はどれだけか。首にかけているだけの時間は聴いた時間として数えない。
・1時間あたりのコスト。支払った金額を入力すれば計算される。数字が下がっていくのを見るのは気持ちがいい。

2つのトラッキングモード

bluetoothのみ — 既定のモード。アプリは何も動かず、通知欄にも何も表示されず、バッテリーへの負担もない。androidはアプリが閉じていても接続イベントを届けてくれるからだ。

詳細トラッキング — 任意。有線とUSBのヘッドホンにも対応し、再生時間と接続時間の比較も測る。androidは実行中のアプリにしか有線プラグのイベントを知らせないため、サイレントで最小優先度の通知が1つ必要になる。この通知が存在する理由はそれだけだ。

bluetoothはどちらのモードでも記録される。

何年後でも信頼できる数字

クラッシュや再起動のたびに12時間が勝手に加算されるようでは、長期的な合計はまったく意味がない。そこで:

・再起動やクラッシュでセッションが開いたままになった場合は、最後に確認できた時点で終了扱いにする。電源が入った瞬間より後になることはない。電源が切れていた時間は決して数えない。
・再起動後もヘッドホンがまだ接続されていれば、古いセッションを引き伸ばすのではなく、新しいセッションを開始する。
・セッションが開いている間は定期的に確認しているので、切断を取りこぼした場合の被害も限定的だ。

構造的にプライベート

ylihにはインターネットへのアクセス権限がない。アカウントもなければ、分析機能も、広告も、トラッキングもない。すべては端末上のデータベースに存在し、それを端末の外へ持ち出せるのは、有効にしている場合のAndroid自身のバックアップだけだ。

設定 → エクスポートで、履歴全体を読みやすいJSONとして書き出せる。インポートでそれを復元できるので、機種変更で数字を失うことはない。

権限

・付近のデバイス(bluetooth):接続イベントを受け取り、ヘッドホンの名前を読み取るために必要。これがないとbluetoothのトラッキングはまったく機能しない。
・通知:詳細トラッキングの通知にのみ使用。
・起動時の自動実行:シャットダウン時に報告されなかったセッションを終了させるため。

MITライセンスのオープンソース。

バージョン

以下からAPKのダウンロードを行うこともできますが、この方法でインストールすると、更新の通知を受け取れないため、安全性の低いダウンロード方法になります。F-Droidクライアントをインストールして使用することをお勧めします。

F-Droidをダウンロード
  • バージョン1.3.0(6) 提案 2026年08月26日 に追加

    arm64-v8a armeabi-v7a x86 x86_64

    このバージョンはAndroid 6.0以降が必要です。

    元の開発者によってビルドされ、署名されました。このソースのtarballに対応していることが保証されています。

    権限
    • ネットワーク接続の表示
      存在するネットワークや接続しているネットワークなど、ネットワーク接続に関する情報を表示することをアプリに許可します。
    • Bluetoothデバイスのペアの設定
      モバイルデバイスのBluetooth設定を表示すること、ペアのデバイスに接続すること、また、ペアのデバイスからの接続を受け入れることをアプリに許可します。
    • ペア設定された Bluetooth デバイスへの接続
      ペア設定された Bluetooth デバイスへの接続をアプリに許可します
    • フォアグラウンドサービスの実行
      フォアグラウンドサービスを使用することをアプリに許可します。
    • タイプが「connectedDevice」のフォアグラウンドサービスの実行
      タイプが「connectedDevice」のフォアグラウンドサービスを使用することをアプリに許可します
    • タイプが「specialUse」のフォアグラウンドサービスの実行
      タイプが「specialUse」のフォアグラウンドサービスを使用することをアプリに許可します
    • 通知の表示
      通知を表示することをアプリに許可します
    • 起動時の実行
      システムの起動後に自動的に起動することをアプリに許可します。許可すると、電話の起動時間が長くなったり、アプリが常に実行されるために電話の動作全体が遅くなったりする可能性があります。
    • デバイスのスリープを無効にする
      電話がスリープ状態になるのを防ぐことをアプリに許可します。
    • it.eldavo.ylih.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    APKをダウンロード 5 MiB PGP署名 | ビルドログ

  • バージョン 1.1.3 の新しい機能
    • ビルドとパッケージングの変更のみです。画面上の変更はありません。
  • バージョン1.1.3(5) - 2026年08月14日 に追加

    arm64-v8a armeabi-v7a x86 x86_64

    このバージョンはAndroid 6.0以降が必要です。

    元の開発者によってビルドされ、署名されました。このソースのtarballに対応していることが保証されています。

    権限
    • ネットワーク接続の表示
      存在するネットワークや接続しているネットワークなど、ネットワーク接続に関する情報を表示することをアプリに許可します。
    • Bluetoothデバイスのペアの設定
      モバイルデバイスのBluetooth設定を表示すること、ペアのデバイスに接続すること、また、ペアのデバイスからの接続を受け入れることをアプリに許可します。
    • ペア設定された Bluetooth デバイスへの接続
      ペア設定された Bluetooth デバイスへの接続をアプリに許可します
    • フォアグラウンドサービスの実行
      フォアグラウンドサービスを使用することをアプリに許可します。
    • タイプが「connectedDevice」のフォアグラウンドサービスの実行
      タイプが「connectedDevice」のフォアグラウンドサービスを使用することをアプリに許可します
    • タイプが「specialUse」のフォアグラウンドサービスの実行
      タイプが「specialUse」のフォアグラウンドサービスを使用することをアプリに許可します
    • 通知の表示
      通知を表示することをアプリに許可します
    • 起動時の実行
      システムの起動後に自動的に起動することをアプリに許可します。許可すると、電話の起動時間が長くなったり、アプリが常に実行されるために電話の動作全体が遅くなったりする可能性があります。
    • デバイスのスリープを無効にする
      電話がスリープ状態になるのを防ぐことをアプリに許可します。
    • it.eldavo.ylih.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    APKをダウンロード 3.5 MiB PGP署名 | ビルドログ