java - Youtube API 在暂停时崩溃

标签 java android android-studio crash youtube-api

当我处于暂停状态时,Youtube API 崩溃。 当我播放 Youtube 视频 onclick 时它工作正常但是当我在 onpause 状态下最小化我的应用程序时它崩溃了。所以给我一些建议。我以前从未使用过 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();
            }
        }
    }



}

最佳答案

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

关于java - Youtube API 在暂停时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47406157/

相关文章:

java - 将自定义 FXML 属性设置为自定义 javafx 组件的参数

java - 在 Android 警报对话框中保存单选按钮选择

Android ndk-build 命令问题

java - Android命名一个P2P设备

c# - 如何使用 TableLayout 创建我想要的设计?

android-studio - 打开/关闭事件时如何保持所有区域折叠?

android - 继续收到 SDK 错误信息

java - 暂停一个简单的计时器

java - Android Studio TransformException : Error:Execution failed for task ':app:transformClassesWithDexForDebug'

java - 如何在ArrayList中设置值