2017-11-21 3 views
3

一時停止状態になるとYoutube APIがクラッシュします。 私はYoutubeビデオonclickを再生しているときに正常に動作していますが、一時停止状態で自分のアプリを最小限に抑えているときにクラッシュします。だから私にいくつかの提案をしてください。私はYoutube APIを使用したことがありません。それが良いかどうか私のコードを見直してください。そうでない場合は、良い の提案も提供してください。前もって感謝します。一時停止中にYoutube APIがクラッシュする

package com.app.embedyoutube; 

    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 

    import com.google.android.youtube.player.YouTubeBaseActivity; 
    import com.google.android.youtube.player.YouTubeInitializationResult; 
    import com.google.android.youtube.player.YouTubePlayer; 
    import com.google.android.youtube.player.YouTubePlayerView; 

    public class MainActivity extends YouTubeBaseActivity implements 
    YouTubePlayer.OnInitializedListener { 

    String key="AIzaSyASLaX32-EG2Rx0EWZFPbwhuBDgsBgC6e0"; 
    YouTubePlayer youTubePlayer1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final YouTubePlayerView youtubePlayerView = findViewById(R.id.youtubePlayerView); 
     youtubePlayerView.initialize(key,this); 
     findViewById(R.id.b1).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      play("ScQrLSBAuQk"); 
      } 
     }); 
     findViewById(R.id.b2).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       play("Ow9-fzf4Qbk"); 
      } 
     }); 


    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { 

      youTubePlayer1=youTubePlayer; 
     youTubePlayer1.cueVideo("Ow9-fzf4Qbk"); 
     youTubePlayer1.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() { 
      @Override public void onAdStarted() { } 
      @Override public void onError(YouTubePlayer.ErrorReason arg0) { } 
      @Override public void onLoaded(String arg0) { } 
      @Override public void onLoading() { } 
      @Override public void onVideoEnded() { } 
      @Override public void onVideoStarted() { } 
     }); 


     youTubePlayer1.setPlaybackEventListener(new YouTubePlayer.PlaybackEventListener() { 
      @Override public void onBuffering(boolean arg0) { } 
      @Override public void onPaused() { } 
      @Override public void onPlaying() { } 
      @Override public void onSeekTo(int arg0) { } 
      @Override public void onStopped() { } 
     }); 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

    } 


    public void play(String url) 
    { 
     if(youTubePlayer1 != null) { 
      youTubePlayer1.cueVideo(url); 
     } 
    } 

    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     if (youTubePlayer1 != null) { 
      if(youTubePlayer1.isPlaying()) { 
       // currentPlayerTime = youTubePlayer1.getCurrentTimeMillis(); 
       youTubePlayer1.pause(); 
      } 
     } 
    } 



} 

答えて

1
@Override 
public void onPause() 
{ 
    super.onPause(); 
    if (youTubePlayer1 != null) { 
     youTubePlayer1.release(); 
    } 
} 

、あなたはsavedInstanceState

であなたの現在のビデオの時間を節約することができますが、よりよい解決策のために私はonResumeでプレーヤーを初期化し、このようなonStopでそれを解放するためにあなたをお勧めします。

@Override 
protected void onResume() { 
    super.onResume(); 
    playerView.initialize(KEY, this); 
} 

@Override 
    public void onStop() { 
    if (player != null) { 
      player.release(); 
     } 
     player = null; 
     super.onStop(); 
    } 
+0

thnks manそれは働いていて、提案にも感謝しています。 –

関連する問題