전체화면 / PiP
전체화면, PiP(Picture in Picture), Now Playing(잠금화면 미디어 컨트롤)은 SDK 가 내부에서 처리합니다. 다만 전체화면 가로 회전과 PiP 자동 진입을 위해 호스트 AndroidManifest.xml 설정이 필요합니다.
Manifest 설정 (필수)
호스트 Activity 에 configChanges 와 supportsPictureInPicture 를 지정합니다.
AndroidManifest.xml
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboardHidden"
android:supportsPictureInPicture="true" />전체화면
controller.toggleFullscreen() 로 전환하며 state.isFullscreen 으로 관찰합니다. SDK 가 Dialog 기반 풀스크린(부모 레이아웃 탈출 + 가로 고정 + 시스템 바 immersive 숨김 + 컷아웃 대응)을 직접 처리하고, 종료 / 뒤로가기 시 원래 방향으로 복원합니다.
controller.enterFullscreen()
controller.exitFullscreen()
controller.toggleFullscreen()
val state by controller.state.collectAsStateWithLifecycle()
// state.isFullscreen 으로 관찰호스트 Activity 에
configChanges="orientation|screenSize" 가 필수입니다. 앱을 세로 고정(screenOrientation="portrait")해도 전체화면만 런타임 가로 전환됩니다.PiP (자동 진입)
allowsPictureInPicture = true 면 SDK 가 PiP 파라미터에 자동 진입(setAutoEnterEnabled, API 31+)을 설정해, 홈 버튼 / 백그라운드 시 OS 가 자동으로 PiP 창으로 전환합니다. 매니페스트 supportsPictureInPicture="true" 가 필수입니다.
- 자동 진입은 영상 재생 중일 때만 활성(정지·버퍼링 시 비활성).
- 플레이어 화면 이탈 시 자동 해제 → 다른 화면에서 홈키로 의도치 않게 PiP 되는 것을 방지.
- PiP 중 SDK 컨트롤은 자동 숨김.
// 수동 진입
VpePip.enter(activity, 16, 9)Now Playing (잠금화면 미디어 컨트롤)
enableNowPlayingPlaybackState = true 면 MediaSession + MediaStyle 알림을 게시해 잠금화면 / 알림 그늘에 제목·아티스트·아트워크와 재생 컨트롤이 노출됩니다. 메타데이터는 playlist 항목의 description / poster 에서 가져옵니다.
Android 13+(API 33) 는
POST_NOTIFICATIONS 런타임 권한이 있어야 알림이 보입니다(호스트가 요청). 백그라운드 재생을 유지하려면 staysActiveInBackground = true, autoPause = false 로 설정합니다.