Youtube播放器视频无法加载

4

我有一个名为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) {}
    }
}
}
5个回答

1
是的,我解决了这个问题。 步骤1: 将youtubeview添加到linearlayout中。 步骤2: 在onResume中,当返回到活动时,移除视图并再次将youtubeview添加到linearlayout中。 步骤3: 在返回键按下时停止youtube视频。

请问您能否详细说明一下如何实现这个功能?我按照您的步骤尝试了,但仍然无法正常工作。谢谢。 - Duc Le
@DucLe:嘿,我在xml中创建了一个LinearLayout,并将youtubeview添加到LinearLayout中,然后对其进行了初始化。如果我再次从另一个活动回到此活动,则在onResume中我会删除视图并重新添加它。 - mob_web_dev
我无法使其工作。你可以展示一些代码吗?我尝试了以编程方式添加YouTubePlayerView,也从xml中添加。视频仍然无法加载。 - stavros.3p

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

       YouTubePlayer.loadVideo(String videoId, int timeMillis);

    } catch (Throwable ignored) {}
}

它是在onResume()方法中调用的吗?video == null吗? - sasikumar
是的。它来了。但是没有加载视频。 - mob_web_dev
在onInitializationSuccess中,尝试使用player.loadVideo(videoId)代替player.cuevideo(videoid)。 - sasikumar
让我们在聊天中继续这个讨论。 (http://chat.stackoverflow.com/rooms/128263/discussion-between-debugger-and-sasikumar) - mob_web_dev

0
尝试在离开活动时完成它,或者在恢复时初始化youtube播放器而不是在创建时。
@Override
public void onResume(){
    super.onResume();
    new VideoAsyncTask().execute();}

0

我的清单示例

<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" />

0

在离开包含YouTubePlayerView的Activity/Fragment之前,请执行以下操作:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接