2017-11-23 4 views
0

Ich benutze Youtube API für Android. Unten ist der CodeAndroid: Zurück Klick existiert von der App bei der Verwendung von 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> 

Wenn die Full Screen sichtbar ist und wenn der Benutzer zurück geklickt haben, möchte ich meine Activity sein angezeigt. Stattdessen passiert jetzt der Zurück-Button aus der App.

Wie kann ich das beheben?

UPDATE Identifizierte ich den Fehler innerhalb der setOnFullScreenListener es wurde nie identifiziert die App im Vollbild ist, obwohl es ist. Ich versuchte, die boolean in wahren zwingen, aber es endete Absturz auf und sagte die player ist null

Antwort

1

Ich bin nicht sicher, aber in Ihrer onFullScreen() Überschreibung Methode haben Sie

isFullScreen = true; 

Vielmehr setzen, verwenden Sie

isFullScreen = b; 

Hoffe das hilft.

+0

Nein, ich habe es bereits benutzt. –

+0

Dies liefert keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/18038086) – alptugd

0

Ich fand die Antwort, entfernen Sie einfach den if Zustand in onInitializationSuccess. Unten ist der Code.

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(); 
     } 
    } 
} 
Verwandte Themen