com.watch_go.remotecamwatchWear OS 워치를 Android 폰 카메라의 저지연 리모컨으로 사용하는 앱입니다. 폰이 보는 화면을 워치에서 실시간으로 미리 보며 원격으로 촬영 · 모드 전환 · 타이머 · 플래시 · 카메라 전환 등을 제어할 수 있습니다. 삼각대 위 셀프 샷, 단체 사진, 브이로그 모니터링, 자연스러운 캔디드 샷에 특화되어 있습니다.
ChannelClient로 워치에 저지연 스트리밍CapabilityClient로 watch_go_cam 기능을 가진 워치 탐색 후 자동 연결:app)ImageAnalysis 유스케이스로 프레임 캡처YuvImage로 NV21 포맷을 JPEG 압축 (전송 크기 최적화)/camera_preview 채널로 저지연 전송/recent_capture_gallery에서 최대 5개의 길이 프레이밍 JPEG 썸네일을 라이브 스트림과 독립적으로 전송Channel.CONFLATED로 백프레셔 관리CAMERA 필수. Android 12(API 31)+에서 BLUETOOTH_CONNECT, BLUETOOTH_SCAN 필수:wear)BitmapFactory로 수신 바이트 디코딩WAKE_LOCK 권한)MainActivity가 CapabilityClient로 watch_go_cam 기능 노드 주기 탐색 (checkConnectedDevices)syncState가 STATE_CONNECTED로 전환ChannelClient / MessageClient 리스너 등록 후 "Waiting for connection..."/ping 메시지 → Wear가 "Ping Received"ChannelClient.openChannel("/camera_preview") → Wear가 "Waiting for video..."ImageAnalysis 프레임 → YuvImage.compressToJpeg → 패킷 [프레임 크기(4B)][JPEG 데이터] 전송InputStream에서 Int 크기 읽고, 해당 크기만큼 바이트 → BitmapFactory → Bitmap 상태 업데이트 → Compose 렌더링CameraManager 해제 + 채널 closeonChannelClosed → 리소스 정리, 대기 상태 복귀/camera_preview 연결 상태와 라이브 스트림을 변경하지 않음| 기기 | 상태 | 설명 |
|---|---|---|
| Mobile | DISCONNECTED | 연결 없음 |
| Mobile | READY | 워치 노드 탐색 완료, 채널 미개설 |
| Mobile | CONNECTING | 채널 열기 중 (프리뷰 활성, 메인 프래그먼트 한정) |
| Mobile | CONNECTED | 프리뷰 전송 중 |
| Wear | WAITING | 연결 없음 |
| Wear | CONNECTING | 채널 열기 중 |
| Wear | CONNECTED | 프리뷰 수신 중 |
모바일은 위 호환 transport 상태와 별도로 다음 진단 상태를 관리합니다.
워치 채널이 연결된 뒤 CameraX만 실패하면 Wear 연결은 연결됨으로 유지하고 카메라 복구 행동만 표시합니다.
태블릿과 넓은 분할 화면에서 세로 아이콘 메뉴와 넓은 카메라 영역을 제공합니다. 연결·업데이트·샘플 이미지 창은 화면 크기에 맞춰 표시되고 긴 안내는 스크롤할 수 있습니다.
설정을 촬영·미리보기/구도·휴대폰 화면 보호로 묶고, 설정 행 전체에서 값을 바꿀 수 있도록 개선했습니다.
촬영 화면의 상단 바·셔터·줌 표시와 연결 안내의 가독성을 개선했습니다.
미리보기 크기 이름을 간결하게 정리했습니다. 화면 덮기의 Black을 검정 샘플 이미지로 통합하고, 샘플 이미지를 한 줄 가로 스크롤로 선택할 수 있게 했습니다.
양쪽 앱을 실행해도 워치가 연결 대기 상태에 머무르던 문제를 수정했습니다.
워치에서 휴대폰 카메라를 다시 열 때 기존 화면을 재사용하고 카메라 연결 정리를 개선했습니다.
+/- 버튼도 그대로 사용할 수 있습니다.