❏ ExoPlayer.PlayerView 인스턴스 내부에 사용자가 전체화면 버튼을 눌렀을 때의 핸들러 (setControllerOnFullScreenModeChangedListener) 가 존재함 ❏ 전체화면 됐을 때, ExoPlayer가 전체화면을 알아서 핸들링 해주지 않음 → 전체화면 됐을 때 Compose Dialog를 현재 액티비티에 띄워서 전체화면 뷰 또한 Compose로 구현
time (ms) Log.e("CurrentTime", it.toString()) }, ..., ) 영상을 어디까지 봤는지는 데이터 로깅 사항에 포함되어 있었기 때문에, onCurrentTimeChanged 라는 콜백을 만들어서 1초에 한번씩 현재의 위치를 밀리초 (ms) 단위로 리턴하게 함
호출되게 할 수는 없을까? ❏ ComposeView로 감싸진 PlayerView를 토대로 Android O (8.0) 부터 공식 지원하는 PIP를 구현함 ❏ 자세한 사항은 compose-video 라이브러리 내에 pip 패키지 / PictureInPicture.kt 파일과 샘플 앱 참조
때, 액티비티가 리사이즈 된다고 생각하면 편함 ❏ 액티비티가 리사이즈 된다 == PIP 플로팅 뷰에서 보여줘야 할 뷰만 냅두고 나머지는 숨기던 해야함 ❏ PIP가 될 때, 최상위 뷰에서 PlayerView만 보이게 하고, PIP가 트리거 될 때 Lifecycle에 맞춰서 재생하던 설정하면 됨
방식은 Sonatype에서 관리하는 JIRA (프로젝트 관리 도구) 에서 직접 티켓을 생성하고, 인증하는 방식임 ❏ 이에 많은 사람들이 Maven Central에 배포하는 것을 어려워 함 ❏ 그래서 이제 자동화 방식으로 변경되었으며, OSSRH → 중앙 포털로 배포하는 방식으로 변경되었음 ❏ https://central.sonatype.com/
방식은 Sonatype에서 관리하는 JIRA (프로젝트 관리 도구) 에서 직접 티켓을 생성하고, 인증하는 방식임 ❏ 이에 많은 사람들이 Maven Central에 배포하는 것을 어려워 함 ❏ 그래서 이제 자동화 방식으로 변경되었으며, OSSRH → 중앙 포털로 배포하는 방식으로 변경되었음 ❏ https://central.sonatype.com/ ❏ 기존 유저만 OSSRH 접속 가능 + 사용 가능, 신규 유저 사용 불가
default. * So create a full screen modal that wraps the Compose Dialog. * * Delegate all functions of the video controller that were used just before * the full screen to the video controller managed by that component. * Conversely, if the full screen dismissed, it will restore all the functions it delegated * for synchronization with the video controller on the full screen and the video controller on the previous screen. * * @param player Exoplayer instance. * @param currentPlayerView [androidx.media3.ui.PlayerView] instance currently in use for playback. * @param fullScreenPlayerView Callback to return all features to existing video player controller. * @param controllerConfig Player controller config. You can customize the Video Player Controller UI. * @param repeatMode Sets the content repeat mode. * @param enablePip Enable PIP. * @param onDismissRequest Callback that occurs when modals are closed. * @param securePolicy Policy on setting [android.view.WindowManager.LayoutParams.FLAG_SECURE] on a full screen dialog window. */
summary */ 으로 시작하는 주석들 ❏ Java / Kotlin 소스코드에서 HTML 형태로 API 문서를 작성하는 것임 ❏ 컴파일 시점에서는 당연히 지워지는 영역 ❏ 라이브러리에서 사용 가능한 공개 API에 JavaDoc 포맷에 맞게 작성하기 ❏ 라이브러리 내부에서 사용하는 Private API 에도 달아도 상관은 없음 ❏ JavaDoc을 작성하면, dokka 같은 API 문서 생성기가 생성도 해줌
기준 brew install gnupg 로 설치함 ❏ Linux ❏ 이미 시스템에 설치되어 있을 수도 있음 ❏ 안되어 있다면 sudo apt install gnupg 로 설치 ❏ Windows ❏ https://gnupg.org/download/index.html#sec-1-2 에서 설치
GnuPG needs to construct a user ID to identify your key. Real name: DoraDora Email address: [email protected] You selected this USER-ID: "DoraDora <[email protected]>"
완전 시스템 종속 기능 + 비디오 플레이어 뷰를 어떻게 호스팅 해야할지 고민 필요 ❏ 커스텀 플레이어 뷰 가능토록 하게 하기 ❏ 지금은 ExoPlayer에서 제공중인 SimplePlayerView 기반으로 만들어져 있음 ❏ 나중에는 Compose 기반으로 플레이어 뷰를 만들 수 있도록 제공 예정 ❏ Android TV 지원 해보기