본문 바로가기

Development/Android

[YouTube API] unauthorized-overlay

YouTubePlayer 가 존재 하는 레이아웃 에서 YouTubePlayer 상위에 뷰가 존재 하면 플레이어가 멈춘다.


로그캣에 출력된 경고 로그는 아래와 같다


W/YouTubeAndroidPlayerAPI: YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is obscured by android.view.View{26787c47 V.ED.... ........ 0,0-1280,50 #102002f android:id/statusBarBackground}. The view is inside the YouTubePlayerView, with the distance in px between each edge of the obscuring view and the YouTubePlayerView being: left: 0, top: 0, right: 0, bottom: 670..


유투브 플레이어 위에 허가되지 않은 오버레이가 있어서 플레이가 멈췄다.

android:id/statusBarBackground 뷰가 유투브플레이어를 가렸다.

android:id/statusBarBackground 뷰가 유투브플레이어 안에 존재하며 위치는 주저리 주저리...


위 로그는 아래에 설명할 상황2 에서 만났던 오류 이며, 상황1 에서도

YouTube video playback stopped due to unauthorized overlay on top of player.

로그는 보게 될 것이다.


상황1

YouTubePlayer(Fragment) + 리스트타입 뷰(Fragment) + ProgressBar


위와 같은 상/하 구조에 정중앙 위치에 나타나는 ProgressBar 를 위치시켰더니 오류 발생


해결1

ProgressBar 는 리스트타입 뷰 에 효과를 위해 존재한다. 따라서,

ProgressBar 의 부모가 되는 레이아웃을 Activity 의 레이아웃으로 지정하지 않고

리스트타입 뷰 가 있는 Fragment 의 최상위 레이아웃으로 지정하여 YouTubePlayer 뷰에 

오버레이 되지 않도록 처리해서 오류를 피할 수 있었다.



상황2

상황1 에서 YouTubePlayer 가 FullScreen 모드로 진입했을 때 오류 발생

FULLSCREEN_FLAG_CUSTOM_LAYOUT 플래그를 사용하였기 때문에

풀스크린 과 이전 사이즈 변환 에 대한 UI를 개발자가 직접 컨트롤 해야 하는 상황

풀스크린 과 이전 사이즈 변환은 JAVA 코드로 직접 처리 하였으나

시스템UI 에 해당하는 상태바 와 네비게이션바 가 나타나면서 오류 발생으로 플레이어 멈춤


해결2

안드로이드 윈도우 레이아웃을 풀스크린으로 변경해 줘야지 오류 없이 처리됨.

아래는 참고 URL

http://stackoverflow.com/questions/31638871/video-pausing-with-error-unauthorized-overlay


풀스크린 요청시 : getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

이전사이즈 요청시 : getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);


위와 같은 오류를 만나게 되면 자신이 생성한 뷰가 유투브플레이어 뷰와의 계층관계 에서 상위에 있는지,

풀스크린 모드 직접 컨트롤 시 안드로이드 윈도우 레이아웃 변경을 하였는지 확인하면 될듯 함.


삽질 삽질 개삽질 끝에 알아낸 내용 ㅡㅡ;