我希望当用户点击“添加视频”按钮图标时,创建一个对话框,在该对话框中可以插入他复制的链接。
之后,按“确定”按钮将加载用户输入的页面(从youtube),然后从中获取视频ID。将存储有关此元素<meta itemprop =" videoId "content =" lWHKaK7Ql3k ">
的所有内容。
可以通过JSOUP库来建议搜索ID,但我找到了html的示例。获得ID后,我们会尝试拍照。
请提示,因为可以生成添加了视频的图像并将其添加到列表中,如屏幕截图所示。 我的代码带有对话框:
private void showAddVideoDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Add video");
View viewInflated = LayoutInflater.from(getContext()).inflate(R.layout.view_layout_add_video, (ViewGroup) getView(), false);
final EditText input = (EditText) viewInflated.findViewById(R.id.edt_videoUrl);
builder.setView(viewInflated);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
m_Text = input.getText().toString();
Toast.makeText(getContext(), "ОК", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Toast.makeText(getContext(), "Отмена", Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
非常感谢非讽刺/非居高临下的回应。
答案 0 :(得分:4)
在以下答案中,我假设用户已将youtube网址(
youtubeUrl
)复制到您的应用程序输入字段中。
String youtubeUrl = ...
// Extract video ID
Document videoPage = Jsoup.connect(youtubeUrl).get();
Element videoIdMeta = videoPage.select("div[itemtype=http://schema.org/VideoObject] meta[itemprop=videoId]").first();
if (videoIdMeta == null) {
// Unable to determine videoId ...
} else {
String videoId = videoIdMeta.attr("content");
// Fetch video image
String videoImageUrl = String.format("https://i.ytimg.com/vi/%s/hqdefault.jpg", videoId);
Connection.Response response = Jsoup //
.connect(videoImageUrl) //
.ignoreContentType(true) // Needed for fetching image
.execute();
// Load image for later use
Bitmap bmp = BitmapFactory.decodeStream(new ByteArrayInputStream(response.bodyAsBytes()));
}
答案 1 :(得分:1)
使用此网址获取与youtube id相关的图片https://i.ytimg.com/vi/ {ID} /hqdefault.jpg
其中ID是您的youtube id