[android] YouTubePlayerFragment fullscreen error 유튜브 API 전체화면 오류
YouTube Android Player API 사용하여 MainActivity 내 Fragment 삽입 - 메인액티비티(MainActivity.java) public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener { @Override protected void onCreate(Bundle savedIns…
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"