Android
[android] YouTubePlayerFragment fullscreen error 유튜브 API 전체화면 오류
박진만
2019. 6. 4. 14:23
반응형
YouTube Android Player API 사용하여 MainActivity 내 Fragment 삽입
- 메인액티비티(MainActivity.java)
public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); setContentView(R.layout.activity_main); youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtubeView); youTubePlayerFragment.initialize(getString(R.string.youtube_api_key), this); } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) { youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION); youTubePlayer.setPlaylistEventListener(playlistEventListener); youTubePlayer.setPlaybackEventListener(playbackEventListener); youTubePlayer.setPlayerStateChangeListener(playerStateChangeListener); if (!wasRestored) { youTubePlayer.loadVideo(currentVideoId); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); } else { String errorMessage = String.format(getString(R.string.error_player), errorReason.toString()); Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOVERY_DIALOG_REQUEST) { // Retry initialization if user performed a recovery action getYouTubePlayerProvider().initialize(getString(R.string.youtube_api_key), this); } } protected YouTubePlayer.Provider getYouTubePlayerProvider() { return (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtubeView); } }
- 레이아웃(activity_main.xml)
Player 에 전체화면 보기를 클릭하면 전체화면으로 변하다가 다시 돌아가기를 반복하면서 오류 발생
- 오류내용
MainActivity has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@f52b39c that was originally bound here
- 해결방법
AndroidManifest.xml 파일 내 activity 에 설정 값 추가
android:configChanges="keyboardHidden|orientation|screenSize"
반응형