YouTube播放器的视频不加载

YouTube播放器的视频不加载

问题描述:

我有一个活动叫VideoActivity。下面的youtubeplayerview有videos.On的列表中的第一次视频是loading.When我点击一个项目,然后去到另一个活动,然后返回到该活动,它不会播放。我可以知道原因吗?YouTube播放器的视频不加载

下面是代码

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:添加youtubeview到的LinearLayout

步骤2:上的onResume除去视图并添加youtubeview再次的LinearLayout时返回到活动

步骤3:停止在回新的YouTube视频

+0

请问您可以添加更多关于如何实现这一点的细节。我尝试了你的脚步,但仍然无法工作。谢谢。 –

+0

@DucLe:嘿,我在xml中创建了一个LinearLayout,并将youtubeview添加到了LinearLayout中,然后初始化了它。如果我再次从另一个活动来到这个活动,那么在onResume中,我删除了该视图并再次添加它。 – Debugger

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

     YouTubePlayer.loadVideo(String videoId, int timeMillis); 

    } catch (Throwable ignored) {} 
} 
+0

我已经试过这种方法。但视频不加载 – Debugger

+0

检查更新回答r – sasikumar

+0

我的朋友没有工作 – Debugger

尝试完成的活动,当你离开它, 或初始化简历上的youtubeplay代替OnCreate中

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

它不起作用 – Debugger