Youtube Player video not loading

て烟熏妆下的殇ゞ 提交于 2020-01-14 12:49:08

问题


I have a activity called VideoActivity.Below the youtubeplayerview there is a list of videos.On the first time the video is loading.When i click on a item then go to another activity and then return to that activity, it does not play. May i know the reason ?

Here is the code

public class VideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

public Video video;
private RecyclerView recyclerVideos;
private static final int RECOVERY_DIALOG_REQUEST = 1;
private YouTubePlayerView youTubeView;


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

    recyclerVideos = (RecyclerView) findViewById(R.id.recyclerVideos);

    Intent i = getIntent();
    video = (Video) i.getSerializableExtra("video");

    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
    recyclerVideos.setLayoutManager(layoutManager);

    new VideoAsyncTask().execute();

 }

@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
public void onInitializationSuccess(YouTubePlayer.Provider provider,
                                    YouTubePlayer player, boolean wasRestored) {

    if (!wasRestored) {
        player.cueVideo(video.Videoid);
        player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
    }
}


@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(Constants.DEVELOPER_KEY, this);
    }
}

private YouTubePlayer.Provider getYouTubePlayerProvider() {
    return (YouTubePlayerView) findViewById(R.id.youtube_view);
}

private class VideoAsyncTask extends AsyncTask<Void, Void, Video> {

    @Override
    protected void onPreExecute() {

    }

    @Override
    protected Video doInBackground(Void... params) {

        try {
         return   webservice();

        } catch (Exception e1) {
            e1.printStackTrace();
            return null;
        }
    }

    protected void onPostExecute(final Video video) {
        try {
            if (video == null) {
                return;
            }

            VideosAdapter videoAdapter = new VideosAdapter(video.videos,VideoActivity.this);
            recyclerVideos.setAdapter(videoAdapter);
    youTubeView.initialize(Constants.DEVELOPER_KEY, VideoActivity.this);

        } catch (Throwable ignored) {}
    }
}
}

回答1:


Yes.I solved the issue.

Step 1 : add the youtubeview to linearlayout

Step 2 : on onResume remove the view and add the youtubeview to linearlayout again when return to activity

Step 3 : stop the youtube video in back press




回答2:


try finishing the activity when you leave it , or initializing the youtubeplay on resume instead of oncreate

@Override
public void onResume(){
    super.onResume();
    new VideoAsyncTask().execute();}



回答3:


@Override
public void onResume(){
super.onResume();
try {
        if (video == null) {
            return;
        }

       YouTubePlayer.loadVideo(String videoId, int timeMillis);

    } catch (Throwable ignored) {}
}



回答4:


Before leaving activity/fragment where the YouTubePlayerView is do this:

youtubePlayer.pause();
youtubePlayer.release();


来源:https://stackoverflow.com/questions/40632058/youtube-player-video-not-loading

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!