Youtube 播放器视频未加载
Posted
技术标签:
【中文标题】Youtube 播放器视频未加载【英文标题】:Youtube Player video not loading 【发布时间】: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)
【问题讨论】:
【参考方案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)。 让我们continue this discussion in chat。【参考方案5】:离开时尝试完成活动, 或在 resume 而不是 oncreate 上初始化 youtubeplay
@Override
public void onResume()
super.onResume();
new VideoAsyncTask().execute();
【讨论】:
以上是关于Youtube 播放器视频未加载的主要内容,如果未能解决你的问题,请参考以下文章
YouTube 视频未在 WebView 中播放 - Android