2017-11-23 1 views
0

Android 용 YouTube API를 사용하고 있습니다. 아래 코드는Android : YouTube API 사용시 뒤로 클릭하면 존재합니다.

MainActivity.java

public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener { 

    private static final int RECOVERY_REQUEST = 1; 
    private YouTubePlayerView youTubeView; 
    private YouTubePlayerFragment youTubePlayerFragment; 
    private YouTubePlayer player; 
    private boolean isFullScreen; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

//  youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); 
//  youTubeView.initialize(Config.YOUTUBE_API_KEY, this); 
     youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager() 
       .findFragmentById(R.id.youtube_fragment); 
     youTubePlayerFragment.initialize(Config.YOUTUBE_API_KEY, this); 
    } 

    @Override 
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) { 
     if (!wasRestored) { 
      this.player = player; 
      this.player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo 
      // player.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS); 

      player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() { 
       @Override 
       public void onFullscreen(boolean b) { 
        isFullScreen = true; 
       } 
      }); 

     } 
    } 

    @Override 
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog(this, RECOVERY_REQUEST).show(); 
     } else { 
      String error = String.format(getString(R.string.player_error), errorReason.toString()); 
      Toast.makeText(this, error, Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == RECOVERY_REQUEST) { 
      // Retry initialization if user performed a recovery action 
      getYouTubePlayerProvider().initialize(Config.YOUTUBE_API_KEY, this); 
     } 
    } 

    protected Provider getYouTubePlayerProvider() { 
     return youTubeView; 
    } 

    @Override 
    public void onBackPressed() { 
     Toast.makeText(this,"Back pressed",Toast.LENGTH_LONG).show(); 

     if(isFullScreen) 
     { 
      player.setFullscreen(false); 
     } 
     else 
     { 
      super.onBackPressed(); 
     } 
    } 
} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <!--<com.google.android.youtube.player.YouTubePlayerView--> 
     <!--android:id="@+id/youtube_view"--> 
     <!--android:layout_width="match_parent"--> 
     <!--android:layout_height="wrap_content"/>--> 
    <fragment 
     android:id="@+id/youtube_fragment" 
     android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

Full Screen가 표시되고 사용자가 다시 클릭하면, 내 Activity하는 것으로 싶을 때 표시됩니다. 대신 지금 일어나고있는 것은 앱의 뒤로 버튼입니다.

어떻게 해결할 수 있습니까?

UPDATE 은 내가 setOnFullScreenListener 내부 그것은 경우에도 앱이 전체 화면에 확인되지 않았다 오류를 확인했다. 내가 참으로 부울을 강제로 시도하지만 잘 모르겠어요하지만 onFullScreen() 재정의 메서드에서, 당신은

isFullScreen = true; 

오히려 설정 한 playernull

답변

1

이다 말을 충돌 결국, 사용

isFullScreen = b; 

희망이 도움이됩니다.

+0

아니요, 이미 사용했습니다. –

+0

이 질문에 대한 답을 제공하지 않습니다. 충분한 [평판] (https://stackoverflow.com/help/whats-reputation)이 있으면 [모든 게시물에 주석 달기] (https://stackoverflow.com/help/privileges/comment) 할 수 있습니다. 대신, [질문자의 설명이 필요없는 답변을 제공하십시오] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do- 대신). - [From Review] (리뷰/저품절 게시물/18038086) – alptugd

0

답변을 찾았 으면 onInitializationSuccess에서 if 상태를 제거하면됩니다. 아래는 코드입니다.

public class MainActivity extends AppCompatActivity implements YouTubePlayer.OnInitializedListener { 

    private static final int RECOVERY_REQUEST = 1; 
    private YouTubePlayerView youTubeView; 
    private YouTubePlayerFragment youTubePlayerFragment; 
    private YouTubePlayer player; 
    private boolean isFullScreen; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

//  youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); 
//  youTubeView.initialize(Config.YOUTUBE_API_KEY, this); 
     youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager() 
       .findFragmentById(R.id.youtube_fragment); 
     youTubePlayerFragment.initialize(Config.YOUTUBE_API_KEY, this); 
    } 

    @Override 
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) { 

      this.player = player; 
      this.player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo 

      // player.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS); 

      this.player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() { 
       @Override 
       public void onFullscreen(boolean b) { 
        isFullScreen = b; 
       } 
      }); 


    } 

    @Override 
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog(this, RECOVERY_REQUEST).show(); 
     } else { 
      String error = String.format(getString(R.string.player_error), errorReason.toString()); 
      Toast.makeText(this, error, Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == RECOVERY_REQUEST) { 
      // Retry initialization if user performed a recovery action 
      getYouTubePlayerProvider().initialize(Config.YOUTUBE_API_KEY, this); 
     } 
    } 

    protected Provider getYouTubePlayerProvider() { 
     return youTubeView; 
    } 

    @Override 
    public void onBackPressed() { 


     if(isFullScreen) 
     { 
      Toast.makeText(this,"Full Screen",Toast.LENGTH_LONG).show(); 
      player.setFullscreen(false); 
     } 
     else 
     { 
      Toast.makeText(this,"Not Full Screen",Toast.LENGTH_LONG).show(); 
      super.onBackPressed(); 
     } 
    } 
}