com.watch_go.multicounterWear OS 워치와 Android 모바일에서 작동하는 다용도 카운터 앱입니다. 화면을 탭해 숫자를 세는 싱글 카운터부터 2~4인 보드게임 스코어 카운터까지 한 앱에서 해결하며, 디지털 시계/스톱워치, 세션 히스토리, 이미지 공유 기능을 함께 제공합니다. 모바일에서 이름·색상·목표·루프 등을 설정하면 워치로 실시간 동기화됩니다.
MainViewModel), Jetpack DataStoreMessageClient)CounterRecordDataStore (모바일) / HistoryManager (워치, 최대 50개 유지)모바일이 5초 간격으로 워치에 /sync-records-request를 보내 pull:
Mobile Wear
│ ── /sync-records-request ───────────────▶ │ (5초마다)
│ ◀── /sync-records-response ───────────── │ (wear 기록 JSON)
│ handleCounterRecordsResponse() │
│ counterRecordDataStore.addCounterRecords()│
│ ── /sync-records-response ───────────────▶│ (동기화 완료된 sessionId 회신)
│ │ historyManager.removeRecordsFromHistory()
| 경로 | 방향 | 용도 |
|---|---|---|
/sync-records-request |
Mobile → Wear | 동기화 요청 |
/sync-records-response |
양방향 | 기록 데이터 전송 / ACK |
/update-settings |
Mobile → Wear | 설정 동기화 |
/watch-version |
Wear → Mobile | 버전 정보 |
isActive=true 중 최신만 유지, 기존 title 보존isActive=false만 삭제 (활성 세션은 유지)data class CounterRecord(
val sessionId: String, // timestamp 기반 고유 ID
val startTime: String, // ISO 시작 시간
val endTime: String?, // ISO 종료 시간
val counter1Count..counter4Count: Int,
val counter1Color..counter4Color: Int,
val counter1Name..counter4Name: String, // 최대 10자
val mode: Int, // 싱글/듀얼/트리플/쿼드
val isActive: Boolean,
val activeDuration: Long, // ms
val title: String? = null // Mobile 전용
)
:app) — MainActivity가 주기적 동기화 트리거, MainViewModel이 MessageClient.OnMessageReceivedListener 구현:wear) — DataLayerListenerService가 메시지 수신·처리, HistoryManager가 DataStore에 기록 관리:watch-go-info-fragment, :onboarding, :profile-core워치 상단에 시간을 항상 표시합니다. 휴대폰의 시계 표시 스위치를 제거하고, 처음 한 번 시간을 길게 눌러 세션을 종료하는 방법을 안내합니다.
기록 카드의 시작·종료 시간 간격을 줄이고 소요 시간을 분명하게 표시했습니다. 큰 글꼴에서는 시간 정보가 자연스럽게 줄바꿈됩니다.
기록 카드의 제목·이름·시간을 읽기 쉽게 개선하고, 큰 글꼴에서는 카운터를 여러 줄로 배치했습니다. 기록 메뉴의 터치 영역도 넓혔습니다.
설정을 목적별 그룹으로 정리하고, 행 전체에서 조작하며 큰 글꼴에서도 이름과 현재 값을 읽기 쉽게 개선했습니다.
개별 카운터 설정 상단의 색상·사진 미리보기를 눌러 바로 꾸미기를 변경할 수 있습니다.
개별 카운터 설정을 이름·꾸미기, 카운팅 규칙, 목표, 현재 값으로 나누고 상단의 번호와 사진·색상으로 편집 대상을 확인할 수 있게 개선했습니다.
메인 화면에서 자주 누르는 카운터를 아래쪽의 넓은 영역에 고정하고, 워치 버튼과 작은 사용법 영상 카드를 위쪽에 배치했습니다. 낮은 화면에서도 보조 기능을 스크롤해 이용할 수 있습니다.
설정·일반 버튼·대화상자의 강조색과 보조 글자 대비를 높여 읽기 쉽게 개선했습니다.
워치 세션 종료 확인창을 스크롤에 따라 가장자리 항목이 작아지는 Wear 스타일로 개선했습니다.
태블릿에서 배너 광고가 하단 시스템 도크에 가려지지 않도록 화면 여백을 개선했습니다.
넓은 창(600dp 이상)에서 카운터 상세 설정이 바로 펼쳐지며, 낮은 화면에서도 설정을 스크롤할 수 있습니다.
기본 카운터와 기본 프로필의 네 색상을 코랄·노랑·녹색·파랑으로 구분했습니다. 기존 저장 색상, 사용자 프로필과 기록은 유지됩니다.
모바일·Wear 전체 초기화를 세션 종료로 변경했습니다. 종료 전 최종값을 기록하고 설정된 0/1 시작값으로 새 세션을 즉시 시작합니다.
프로필 선택 후 카운터 개수를 바꿀 때 사용하지 않은 중간 기록이 남는 문제를 수정했습니다. 카운트한 기록은 초기화 전 최종값으로 보존됩니다.
워치 상단에 시간을 항상 표시합니다. 휴대폰의 시계 표시 스위치를 제거하고, 처음 한 번 시간을 길게 눌러 세션을 종료하는 방법을 안내합니다.
기록 카드의 시작·종료 시간 간격을 줄이고 소요 시간을 분명하게 표시했습니다. 큰 글꼴에서는 시간 정보가 자연스럽게 줄바꿈됩니다.
기록 카드의 제목·이름·시간을 읽기 쉽게 개선하고, 큰 글꼴에서는 카운터를 여러 줄로 배치했습니다. 기록 메뉴의 터치 영역도 넓혔습니다.
설정을 목적별 그룹으로 정리하고, 행 전체에서 조작하며 큰 글꼴에서도 이름과 현재 값을 읽기 쉽게 개선했습니다.
개별 카운터 설정 상단의 색상·사진 미리보기를 눌러 바로 꾸미기를 변경할 수 있습니다.
개별 카운터 설정을 이름·꾸미기, 카운팅 규칙, 목표, 현재 값으로 나누고 상단의 번호와 사진·색상으로 편집 대상을 확인할 수 있게 개선했습니다.
메인 화면에서 자주 누르는 카운터를 아래쪽의 넓은 영역에 고정하고, 워치 버튼과 작은 사용법 영상 카드를 위쪽에 배치했습니다. 낮은 화면에서도 보조 기능을 스크롤해 이용할 수 있습니다.
설정·일반 버튼·대화상자의 강조색과 보조 글자 대비를 높여 읽기 쉽게 개선했습니다.
워치 세션 종료 확인창을 스크롤에 따라 가장자리 항목이 작아지는 Wear 스타일로 개선했습니다.
태블릿에서 배너 광고가 하단 시스템 도크에 가려지지 않도록 화면 여백을 개선했습니다.
넓은 창(600dp 이상)에서 카운터 상세 설정이 바로 펼쳐지며, 낮은 화면에서도 설정을 스크롤할 수 있습니다.
기본 카운터와 기본 프로필의 네 색상을 코랄·노랑·녹색·파랑으로 구분했습니다. 기존 저장 색상, 사용자 프로필과 기록은 유지됩니다.
모바일·Wear 전체 초기화를 세션 종료로 변경했습니다. 종료 전 최종값을 기록하고 설정된 0/1 시작값으로 새 세션을 즉시 시작합니다.
프로필 선택 후 카운터 개수를 바꿀 때 사용하지 않은 중간 기록이 남는 문제를 수정했습니다. 카운트한 기록은 초기화 전 최종값으로 보존됩니다.