gpt4 book ai didi

java - 在 RecyclerView 中使用 Youtube 缩略图

转载 作者:搜寻专家 更新时间:2023-11-01 09:34:13 26 4
gpt4 key购买 nike

我正在尝试在 RecyclerView 中加载 Youtube 视频缩略图。调用 initialize() 方法时出现此错误。

java.lang.IllegalArgumentException: Service Intent must be explicit:              Intent { act=com.google.android.youtube.api.service.START }

这是我的 recyclerView 适配器:

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private Context mContext;
private List<Song> songsList;

public DataAdapter(Context mContext, List<Song> songsList) {
this.mContext = mContext;
this.songsList = songsList;
}

@Override
public int getItemCount() {
return songsList.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
public TextView song_title, song_author;
YouTubeThumbnailView youTubeThumbnailView;

public ViewHolder(View view) {
super(view);
song_title = (TextView) view.findViewById(R.id.song_title);
song_author = (TextView) view.findViewById(R.id.song_author);

youTubeThumbnailView = (YouTubeThumbnailView) view.findViewById(R.id.youtube_thumbnail);
}
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_row, parent, false);

return new ViewHolder(itemView);
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final Song song = songsList.get(position);
holder.song_title.setText(song.getTitle());
holder.song_author.setText(song.getAuthor());

holder.youTubeThumbnailView.initialize(YOUTUBE_API_KEY, new YouTubeThumbnailView.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, final YouTubeThumbnailLoader youTubeThumbnailLoader) {
youTubeThumbnailLoader.setVideo(videoID);
youTubeThumbnailLoader.setOnThumbnailLoadedListener(new YouTubeThumbnailLoader.OnThumbnailLoadedListener() {
@Override
public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) {

}

@Override
public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {

}
});
}

@Override
public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {

}
});
}

在 MainActivity 中,我这样调用 DataAdapter:

mAdapter = new DataAdapter(MainActivity.this, songs);
mRecyclerView.setAdapter(mAdapter);

最佳答案

您必须使用以下网址下载特定视频的缩略图 http://img.youtube.com/vi/VIDEO_ID/default.jpg通过将 VIDEO_ID 替换为 YouTube 的实际视频 ID。

例如,您的 youtube 视频 url 是 https://www.youtube.com/watch?v=47S-Wn4EYdU 那么缩略图 URL 将是 http://img .youtube.com/vi/47S-Wn4EYdU/default.jpg,您必须下载此图片并将其设置为holder.youTubeThumbnailView

示例

Adapter.java

String YOUTUBE_URL = "https://www.youtube.com/watch?v=47S-Wn4EYdU";
String[] strUrlText = YOUTUBE_URL.split("=");
String strURL = "http://img.youtube.com/vi/"+strUrlText[1]+"/default.jpg";


Images_Download imgs_Download = new Images_Download(context, imageView);
imgs_Download.execute(strURL);

imageView.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent in = new Intent(context, Youtube_Player_Activity.class);
in.putExtra("URL", YOUTUBE_URL);
context.startActivity(in);
}
});

Youtube_Player_Activity.java

public class Youtube_Player_Activity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

String url = "";
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.youtube_player_activity);

Bundle bundle = getIntent().getExtras();
if(bundle != null)
{
url = bundle.getString("URL");
}

YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.videoView1);
youTubeView.initialize(SecurityInfo.DEVELOPER_KEY, this);
}
.....
}

关于java - 在 RecyclerView 中使用 Youtube 缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com