상세 컨텐츠

본문 제목

안드로이드(ANDROID) - PIP 모드란?

Android 자료실/기능 개발

by Victorywskim 2020. 3. 26. 18:31

본문

반응형

예전에 안드로이드 버전이 올라가게 되면 유튜브 프리미엄이 아니더라도 유사한 기능으로

영상을 볼 수 있다는 내용의 포스팅을 봤던 기억이 있긴 하다. 하지만 얼마 못가고 바로 잊어버렸다

최근에 권한 관련으로 안드로이드 개발자 문서를 살펴보다가 PIP 모드를 보게 되었다.

 

그때까지도 사실 나는 유튜브 프리미엄을 사용하고 있다. 그래서 "창모드로 영상 시청 구현한 거 진짜 잘 만들었다..", 

"어떻게 만들었지?" 라는 이런저런 생각을 하며 자기 계발 목적으로 비슷하게 구현해보았는데 오로지 "다른 화면 위에 그리기" 라는 권한만 이용하였었다.

 

유튜브 앱의 권한을 보니 "다른 화면 위에 그리기" 와 "PIP 모드권한이 포함되어 있었다.

 

이유는 간단하였다.

 

[안드로이드 개발자 문서의 설명 내용]

Android 8.0(API 레벨 26)에서는 활동을 PIP 모드로 실행할 수 있습니다. PIP는 주로 동영상 재생에 사용되는 특수한 유형의 멀티 윈도우 모드입니다. 사용자가 기본 화면에서 앱을 탐색하거나 콘텐츠를 탐색할 때 화면 모서리에 고정된 작은 창에서 동영상을 볼 수 있습니다.

 

즉 안드로이드 SDK 26버전 이상 부터는 PIP 기능을 이용할 수 있으며, 그 이하 버전은 "다른 화면 위에 그리기" 권한을 이용해서 직접 뷰를 만들어야 한다.

 

그럼 그게 끝인가?

 

물론 아니다.

 

"다른 화면 위에 그리기" 와 "PIP 모드권한은 이용 방법에 현저한 차이가 있다.

  CLASS VIEW 구성 VIEW 제거
다른 화면 위에 그리기 ACTIVITY or SERVICE WindowManager 직접 구현
PIP 모드 ACTIVITY ACTIVITY 기능 내장 + 직접 구현

안드로이드 개발자 페이지에 의하면 구축 방법은 다음과 같다.

 

1. PIP 모드를 사용하려는 엑티비티의 매니페스트 정보에 가운데 3줄 코드를 추가한다.

<activity android:name=".MediaSessionPlaybackActivity"

          android:resizeableActivity="true"
          android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
          android:supportsPictureInPicture="true" 
          
/>

 

2. 1번의 3줄을 추가한 엑티비티 클래스에 PIP 모드 기능을 추가한다.

fun minimize() {
      // Hide the controls in picture-in-picture mode.
      mMovieView.hideControls()
      // Calculate the aspect ratio of the PiP screen.
      val aspectRatio = Rational(mMovieView.width, mMovieView.height)
      mPictureInPictureParamsBuilder.setAspectRatio(aspectRatio).build()
      
      // 
      enterPictureInPictureMode(mPictureInPictureParamsBuilder.build())
}

필요에 따라서 홈버튼을 눌렀을 때나 현재 엑티비티를 종료하지 않은 상태에서도 PIP 모드를 실행할 수 있다.

 

홈버튼 이벤트 발생 시

override fun onUserLeaveHint() {
      if (iWantToBeInPipModeNow()) {
      enterPictureInPictureMode()
      }
}

엑티비티 중단 시

override fun onPause() {
      super.onPause()
      minimize()
}

 

해당 코드로 생성한 앱은 아래 첨부 파일로 확인 가능합니다!

pip 테스트 앱.apk
7.44MB

 

만약 APK보다는 전체 소스코드가 필요하시다면 아래 링크로 접속하여 확인하시면 되겠습니다.

 

android/media-samples

Multiple samples showing the best practices in media APIs on Android (audio, video, etc.). - android/media-samples

github.com

 

 

 

 

 

 

참고 자료 : https://developer.android.com/guide/topics/ui/picture-in-picture?hl=ko

 

PIP 모드 지원  |  Android 개발자  |  Android Developers

Android 8.0에서는 활동을 PIP 모드로 실행할 수 있습니다.

developer.android.com

 

반응형

관련글 더보기