3.5 KiB
3.5 KiB
20260324 라이브룸 캡처/녹화 정합 개선
구현 체크리스트
- 기존 구현에서
FLAG_SECURE와 스크린샷/녹화 콜백 결합 지점을 다시 점검한다. (QA:LiveRoomActivity캡처 보안 관련 함수 흐름 확인) FLAG_SECURE유지 기준으로 dead path인 스크린샷 콜백 경로를 제거한다. (QA:registerScreenCaptureCallback/관련 상태 플래그 제거 확인)- 녹화 상태 기반 강제 mute 경로만 유지되도록 로직과 주석을 정리한다. (QA:
addScreenRecordingCallback경로 단일화 확인) - Manifest에서 불필요해진 스크린샷 감지 권한을 제거한다. (QA:
DETECT_SCREEN_CAPTURE선언 제거 확인) - 진단/테스트/빌드 및 수동 QA 결과를 누적 기록한다. (QA: 실행 명령과 결과 로그 확인)
검증 기록
- 2026-03-24
- 무엇: 후속 정합 개선 작업 계획 문서를 생성했다.
- 왜: 사용자 요청(더 나은/최신 방식 반영)에 맞춰 변경 범위와 완료 기준을 명확히 고정하기 위해서다.
- 어떻게:
docs/20260324_라이브룸캡처녹화정합개선.md파일을 생성하고 체크리스트/검증 섹션을 작성했다.
- 2026-03-24
- 무엇: 스크린샷 콜백 경로를 제거하고 녹화 기반 강제 mute 경로만 유지하도록 구현을 단순화했다.
- 왜:
FLAG_SECURE를 유지하는 현재 전략에서 스크린샷 콜백 기반 강제 mute는 실질 동작하지 않는 dead path였기 때문이다. - 어떻게:
app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt에서registerScreenCaptureCallback/unregisterScreenCaptureCallback관련 함수, 스크린샷 상태 플래그(isScreenshotMuteActive) 및 타이머 상수/러너블을 제거했다.- 강제 mute 계산을
isScreenRecordingActive단일 상태로 정리했다.
- 2026-03-24
- 무엇: Manifest에서 불필요 권한을 제거했다.
- 왜: 스크린샷 콜백 경로를 제거했으므로
DETECT_SCREEN_CAPTURE권한이 더 이상 필요하지 않다. - 어떻게:
app/src/main/AndroidManifest.xml에서<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />선언을 삭제하고DETECT_SCREEN_RECORDING만 유지했다.
- 2026-03-24
- 무엇: 설계 근거와 실행 검증을 완료했다.
- 왜: 변경이 실제로 dead path 제거 + 기존 보안 전략 유지를 만족하는지 객관적으로 확인하기 위해서다.
- 어떻게:
- 외부 근거 확인:
- Android
Activity.ScreenCaptureCallback문구 "This is not invoked if the activity window has WindowManager.LayoutParams.FLAG_SECURE set."를 근거로 스크린샷 콜백 비동작 조건을 재확인했다. WindowManagerAPI 레퍼런스(addScreenRecordingCallback,SCREEN_RECORDING_STATE_VISIBLE, Added in API level 35)와WindowManager.LayoutParams.FLAG_SECURE레퍼런스를 확인해 녹화 상태 콜백/보안 플래그의 현재 문서 기준을 재점검했다.
- Android
- 정적 진단:
lsp_diagnostics결과:.kt/.xmlLSP 서버 미구성으로 진단 불가,.md파일은 diagnostics 없음.
- 빌드/테스트:
- 실행 명령:
./gradlew :app:testDebugUnitTest :app:assembleDebug - 결과:
BUILD SUCCESSFUL
- 실행 명령:
- 수동 QA:
- 실행 명령:
python3검증 스크립트(FLAG_SECURE 유지, 스크린샷 API 제거, recording-only mute 계산, Manifest 권한 정합 확인) - 결과:
MANUAL QA PASS: FLAG_SECURE 유지 + dead screenshot path 제거 + recording-only mute flow verified.
- 실행 명령:
- 외부 근거 확인: