ylih 앱
헤드폰은 언젠가 고장 납니다. 그 전에 ylih는 헤드폰에 대해 정말 중요한 단 하나의 질문에 답합니다: 몇 시간이나 사용하셨나요?헤드폰이 연결될 때마다 ylih는 그 시각을 기록합니다. 연결이 끊길 때마다 그 시각도 기록합니다. 아이디어는 이게 전부입니다 — 그리고 연결이란 결국 두 개의 시각일 뿐이므로, 이 앱은 이를 위해 백그라운드에서 실행될 필요가 없습니다.
기록하는 항목
• 물리적인 헤드폰 한 쌍당 누적 사용 시간. 한 쌍이 수명을 다하면 은퇴시키세요 — 총합이 고정되고, 같은 모델의 다음 쌍은 세대 2로 다시 0부터 시작합니다. 예전 숫자와 새 숫자는 절대 섞이지 않습니다.
• 모든 세션을 영구히 보관: 연결 시각, 연결 해제 시각, 그리고 종료된 이유.
• 재생 시간 (선택 사항): 연결된 시간 중 실제로 오디오가 재생된 시간이 얼마나 되는지. 그래서 "목에 걸어만 둔 시간"은 청취로 계산되지 않습니다.
• 구매 가격을 입력하면 시간당 비용을 계산합니다. 이 숫자가 떨어지는 걸 보는 건 꽤 만족스럽습니다.
두 가지 추적 모드
블루투스 전용 — 기본 모드입니다. 앱의 어떤 부분도 실행되지 않고, 알림창에 아무것도 남지 않으며, 배터리 소모도 없습니다. android가 앱이 꺼져 있어도 연결 이벤트를 전달해 주기 때문입니다.
상세 추적 — 선택 사항입니다. 유선 및 usb 헤드폰을 추가하고, 재생 시간 대비 연결 시간을 측정합니다. android는 이미 실행 중인 앱에만 유선 연결 이벤트를 알려주기 때문에, 조용하고 우선순위가 가장 낮은 알림이 하나 필요합니다. 이 알림이 존재하는 이유는 오직 그것뿐입니다.
블루투스는 어느 모드에서도 추적됩니다.
몇 년 후에도 믿을 수 있는 숫자
충돌이나 재부팅이 조용히 12시간을 더해 버린다면 장기 누적 숫자는 아무 의미가 없습니다. 그래서:
• 재부팅이나 충돌로 열린 채 남은 세션은 마지막으로 확인된 하트비트 시점에 닫히며, 휴대폰이 부팅된 시점보다 늦게 닫히는 일은 없습니다. 휴대폰이 꺼져 있던 시간은 절대 계산되지 않습니다.
• 재부팅 후에도 헤드폰이 계속 연결되어 있다면, 이전 세션을 그 공백까지 늘리는 대신 새 세션이 시작됩니다.
• 세션이 열려 있는 동안에는 하트비트가 계속 확인되므로, 연결 해제를 놓치더라도 피해가 제한됩니다.
구조적으로 프라이빗
ylih에는 인터넷 권한이 없습니다. 계정도, 분석 도구도, 광고도, 트래킹도 없습니다. 모든 것은 당신의 휴대폰 안 데이터베이스에 존재하며, 이를 기기 밖으로 복사할 수 있는 것은 사용 설정해 둔 경우의 안드로이드 자체 백업뿐입니다.
설정 → 내보내기는 전체 기록을 읽기 쉬운 json 형식으로 저장하고, 가져오기는 이를 복원합니다. 그러니 새 휴대폰으로 옮겨도 숫자를 잃지 않습니다.
권한
• 주변 기기 (블루투스): 연결 이벤트를 받고 헤드셋 이름을 읽기 위해 필요합니다. 이 권한이 없으면 블루투스 추적 자체가 작동하지 않습니다.
• 알림: 상세 추적 알림에만 사용됩니다.
• 시작 시 실행: 종료 시 보고되지 않은 세션을 닫기 위해 사용됩니다.
MIT 라이선스로 공개된 오픈소스입니다.










