ylih - ヘッドホンの中の人生
ヘッドホンの寿命を記録。オフライン、永久、プライベート
バージョン 1.3.0 の新しい機能
• ylih が 76 言語から 220 言語に対応しました。
• 統計画面で直近 30 日をグラフだけでなく数値でも一覧できます。
• 再生時間と接続時間の計測がより正確になりました。
• グラフと履歴の読み込みが速くなりました。
• アプリのアンインストール時に android がデータを保持できます。
• スクリーンリーダー対応を改善しました。
• 統計画面で直近 30 日をグラフだけでなく数値でも一覧できます。
• 再生時間と接続時間の計測がより正確になりました。
• グラフと履歴の読み込みが速くなりました。
• アプリのアンインストール時に android がデータを保持できます。
• スクリーンリーダー対応を改善しました。
ヘッドホンはいつか壊れる。その前に、ylihが本当に大事な問いに答える。あのヘッドホンは何時間使えたのか?
ヘッドホンが接続されるたびに、ylihはその時刻を記録する。切断されるたびに、その時刻も記録する。それだけだ。接続とは2つの時刻にすぎないので、このアプリは記録のためにバックグラウンドで動き続ける必要がない。
記録する内容
・物理的なペアごとの総利用時間。ペアが壊れたら引退させる — 合計時間はそこで固定され、同じ機種の次のペアはまたゼロから、世代2として始まる。古い数字が新しい数字と混ざることは決してない。
・すべてのセッションを永久に保存:接続した時刻、切断した時刻、そして終わった理由。
・再生時間(任意):接続していた時間のうち、実際に音を再生していた時間はどれだけか。首にかけているだけの時間は聴いた時間として数えない。
・1時間あたりのコスト。支払った金額を入力すれば計算される。数字が下がっていくのを見るのは気持ちがいい。
2つのトラッキングモード
bluetoothのみ — 既定のモード。アプリは何も動かず、通知欄にも何も表示されず、バッテリーへの負担もない。androidはアプリが閉じていても接続イベントを届けてくれるからだ。
詳細トラッキング — 任意。有線とUSBのヘッドホンにも対応し、再生時間と接続時間の比較も測る。androidは実行中のアプリにしか有線プラグのイベントを知らせないため、サイレントで最小優先度の通知が1つ必要になる。この通知が存在する理由はそれだけだ。
bluetoothはどちらのモードでも記録される。
何年後でも信頼できる数字
クラッシュや再起動のたびに12時間が勝手に加算されるようでは、長期的な合計はまったく意味がない。そこで:
・再起動やクラッシュでセッションが開いたままになった場合は、最後に確認できた時点で終了扱いにする。電源が入った瞬間より後になることはない。電源が切れていた時間は決して数えない。
・再起動後もヘッドホンがまだ接続されていれば、古いセッションを引き伸ばすのではなく、新しいセッションを開始する。
・セッションが開いている間は定期的に確認しているので、切断を取りこぼした場合の被害も限定的だ。
構造的にプライベート
ylihにはインターネットへのアクセス権限がない。アカウントもなければ、分析機能も、広告も、トラッキングもない。すべては端末上のデータベースに存在し、それを端末の外へ持ち出せるのは、有効にしている場合のAndroid自身のバックアップだけだ。
設定 → エクスポートで、履歴全体を読みやすいJSONとして書き出せる。インポートでそれを復元できるので、機種変更で数字を失うことはない。
権限
・付近のデバイス(bluetooth):接続イベントを受け取り、ヘッドホンの名前を読み取るために必要。これがないとbluetoothのトラッキングはまったく機能しない。
・通知:詳細トラッキングの通知にのみ使用。
・起動時の自動実行:シャットダウン時に報告されなかったセッションを終了させるため。
MITライセンスのオープンソース。
ヘッドホンが接続されるたびに、ylihはその時刻を記録する。切断されるたびに、その時刻も記録する。それだけだ。接続とは2つの時刻にすぎないので、このアプリは記録のためにバックグラウンドで動き続ける必要がない。
記録する内容
・物理的なペアごとの総利用時間。ペアが壊れたら引退させる — 合計時間はそこで固定され、同じ機種の次のペアはまたゼロから、世代2として始まる。古い数字が新しい数字と混ざることは決してない。
・すべてのセッションを永久に保存:接続した時刻、切断した時刻、そして終わった理由。
・再生時間(任意):接続していた時間のうち、実際に音を再生していた時間はどれだけか。首にかけているだけの時間は聴いた時間として数えない。
・1時間あたりのコスト。支払った金額を入力すれば計算される。数字が下がっていくのを見るのは気持ちがいい。
2つのトラッキングモード
bluetoothのみ — 既定のモード。アプリは何も動かず、通知欄にも何も表示されず、バッテリーへの負担もない。androidはアプリが閉じていても接続イベントを届けてくれるからだ。
詳細トラッキング — 任意。有線とUSBのヘッドホンにも対応し、再生時間と接続時間の比較も測る。androidは実行中のアプリにしか有線プラグのイベントを知らせないため、サイレントで最小優先度の通知が1つ必要になる。この通知が存在する理由はそれだけだ。
bluetoothはどちらのモードでも記録される。
何年後でも信頼できる数字
クラッシュや再起動のたびに12時間が勝手に加算されるようでは、長期的な合計はまったく意味がない。そこで:
・再起動やクラッシュでセッションが開いたままになった場合は、最後に確認できた時点で終了扱いにする。電源が入った瞬間より後になることはない。電源が切れていた時間は決して数えない。
・再起動後もヘッドホンがまだ接続されていれば、古いセッションを引き伸ばすのではなく、新しいセッションを開始する。
・セッションが開いている間は定期的に確認しているので、切断を取りこぼした場合の被害も限定的だ。
構造的にプライベート
ylihにはインターネットへのアクセス権限がない。アカウントもなければ、分析機能も、広告も、トラッキングもない。すべては端末上のデータベースに存在し、それを端末の外へ持ち出せるのは、有効にしている場合のAndroid自身のバックアップだけだ。
設定 → エクスポートで、履歴全体を読みやすいJSONとして書き出せる。インポートでそれを復元できるので、機種変更で数字を失うことはない。
権限
・付近のデバイス(bluetooth):接続イベントを受け取り、ヘッドホンの名前を読み取るために必要。これがないとbluetoothのトラッキングはまったく機能しない。
・通知:詳細トラッキングの通知にのみ使用。
・起動時の自動実行:シャットダウン時に報告されなかったセッションを終了させるため。
MITライセンスのオープンソース。
- 作者: Davide Palma
- ライセンス: MIT License
- 問題を報告
- ソースコード
- 変更履歴
- ビルドのメタデータ
- 再現性の状態
バージョン
以下からAPKのダウンロードを行うこともできますが、この方法でインストールすると、更新の通知を受け取れないため、安全性の低いダウンロード方法になります。F-Droidクライアントをインストールして使用することをお勧めします。
F-Droidをダウンロード-
arm64-v8aarmeabi-v7ax86x86_64このバージョンはAndroid 6.0以降が必要です。
元の開発者によってビルドされ、署名されました。このソースのtarballに対応していることが保証されています。
APKをダウンロード 5 MiB PGP署名 | ビルドログ
-
arm64-v8aarmeabi-v7ax86x86_64このバージョンはAndroid 6.0以降が必要です。
元の開発者によってビルドされ、署名されました。このソースのtarballに対応していることが保証されています。
APKをダウンロード 3.5 MiB PGP署名 | ビルドログ
バージョン 1.1.3 の新しい機能
• ビルドとパッケージングの変更のみです。画面上の変更はありません。