【问题标题】:Youtube Player video not loadingYoutube 播放器视频未加载
【发布时间】:2017-03-30 15:31:44
【问题描述】:

我有一个名为 VideoActivity 的活动。在 youtubeplayerview 下方有一个视频列表。在第一次加载视频时。当我点击一个项目时去另一个活动,然后回到那个活动,它不玩。我可以知道原因吗?

这里是代码

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) {}
    }
}
}

【问题讨论】:

    标签: android youtube youtube-api android-youtube-api


    【解决方案1】:

    我的清单示例

    <application
        android:name=".UGNEWS24"
        android:allowBackup="true"
        android:debuggable="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ugnews24_rounded_logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:roundIcon="@drawable/ugnews24_rounded_logo"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="HardcodedDebugMode">
        <activity android:name=".activity.WebViewActivity"></activity>
        <activity android:name=".SearchResultsActivity" />
    

    【讨论】:

      【解决方案2】:

      在离开 YouTubePlayerView 所在的活动/片段之前,请执行以下操作:

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

      【讨论】:

        【解决方案3】:

        是的。我解决了这个问题。

        第 1 步:将 youtubeview 添加到线性布局

        第 2 步:在 onResume 上删除视图并在返回活动时再次将 youtubeview 添加到线性布局

        第 3 步:在后按中停止 youtube 视频

        【讨论】:

        • 能否请您添加有关如何实现此功能的更多详细信息。我尝试了您的步骤,但仍然无法正常工作。谢谢。
        • @DucLe :嘿,我在 xml 中创建了一个 LinearLayout,并将 youtubeview 添加到 LinearLayout,然后对其进行了初始化。如果我再次从另一个活动中来到这个活动,那么在 onResume 中我删除了视图并再次添加它.
        • 我无法让它工作。你能显示一些代码吗?我尝试以编程方式以及从 xml 添加 YouTubePlayerView。视频仍然无法加载。
        【解决方案4】:
        @Override
        public void onResume(){
        super.onResume();
        try {
                if (video == null) {
                    return;
                }
        
               YouTubePlayer.loadVideo(String videoId, int timeMillis);
        
            } catch (Throwable ignored) {}
        }
        

        【讨论】:

        • 它来了Resume??视频 == null??
        • 是的。它来了。但没有加载视频
        • 尝试一次,而不是 player.cuevideo(videoid) 在 onInitializationSuccess 中使用 player.loadVideo(videoId)。
        【解决方案5】:

        离开时尝试完成活动, 或在 resume 而不是 oncreate 上初始化 youtubeplay

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-02
          • 2020-04-29
          • 1970-01-01
          • 2014-05-01
          • 2014-04-29
          • 2013-06-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多