耳機遲早會壞。在那之前，ylih 會回答關於一副耳機唯一真正重要的問題：你究竟用了它多少小時？

耳機每次連線，ylih 都會記下時間；每次斷線，也會記下時間。就是這麼簡單——因為一次連線就只是兩個時間戳記，所以應用程式根本不需要在背景持續執行。

它會記錄什麼

• 每副實體耳機的累積時數。耳機壞掉時，將它退役——總時數就此凍結，換上同款新耳機會作為第 2 代重新從零開始，舊的數字永遠不會與新的混在一起。
• 每一次連線都會永久保存：連線時間、斷線時間，以及結束的原因。
• 播放時間（選用）：那段連線時間中，實際在播放音訊的比例，讓「掛在脖子上」不會被算作在聽。
• 每小時使用成本，只要輸入購買金額即可。看著這個數字慢慢下降，會很有成就感。

兩種追蹤模式

僅藍牙——預設模式。應用程式不會執行任何東西，通知欄不會出現任何通知，也不會消耗額外電量，因為即使應用程式已關閉，android 仍會將連線事件傳遞給它。

詳細追蹤——選用。加入有線與 USB 耳機，並測量播放時間與連線時間的比例。它需要一則無聲、最低優先度的通知，因為 android 只會將有線插拔事件回報給已在執行中的應用程式，這也是這則通知存在的唯一原因。

無論選擇哪種模式，藍牙都會被追蹤。

多年後仍可信賴的數字

如果一次當機或重新開機悄悄多算了十二小時，長期累積的總時數就毫無意義。因此：

• 因重新開機或當機而未正常結束的連線，會在最後一次已知的心跳時間點結束，絕不會晚於手機開機的那一刻。手機關機期間的時間，永遠不會被計入。
• 如果耳機在重新開機後仍保持連線，會開始一次全新的連線，而不是把舊的連線硬拉長跨越這段空窗期。
• 連線保持開啟時會持續發送心跳，藉此限制漏接一次斷線訊號所造成的誤差。

從架構上就注重隱私

ylih 沒有網路權限。沒有帳號、沒有分析追蹤、沒有廣告，也沒有任何形式的追蹤。所有資料都只存在於你手機上的資料庫中——唯一能將它複製到裝置之外的，是 Android 內建的備份功能，前提是你已啟用。

「設定 → 匯出」會將完整歷史紀錄寫成可讀的 json 檔案，「匯入」則可將其還原，因此換新手機也不會讓你失去這些數字。

權限

• 鄰近裝置（藍牙）：接收連線事件並讀取耳機名稱所必需。沒有這項權限，藍牙追蹤將完全無法運作。
• 通知：僅用於詳細追蹤功能的通知。
• 開機時啟動：用於結束那些因關機而從未被回報的連線。

以 MIT 授權開放原始碼。
