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"


	
 		
        
	

반응형