Android 如何检查Youtube视频是否可嵌入?
我正在开发一个应用程序,如果视频是可嵌入的,它将播放youtube视频。否则我想在Youtube上打开它 我的代码如下所示:Android 如何检查Youtube视频是否可嵌入?,android,android-studio,video,youtube,Android,Android Studio,Video,Youtube,我正在开发一个应用程序,如果视频是可嵌入的,它将播放youtube视频。否则我想在Youtube上打开它 我的代码如下所示: holder.mThumbnailImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Playback in mobile Intent sen
holder.mThumbnailImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Playback in mobile
Intent sendIntent = new Intent(holder.mContext, YouTubePlayerFragmentActivity.class);
sendIntent.putExtra("id", video.getId());
holder.mContext.startActivity(sendIntent);
// BELOW IS WHAT I WANT TO HAPPEN IF THE VIDEO IS NOT EMBEDDALBE
//
// holder.mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + video.getId())));
}
});
有人能帮我吗?我是否需要提供更多代码供您理解
Thx好的,所以我终于,终于找到了正确的方法 要获取此信息,请使用API密钥和视频Id向YouTube数据API v3发出HTTP
get
请求:
https://www.googleapis.com/youtube/v3/videos?id=&key=&part=status
[编辑]如何使用android上的YouTube数据API v3通过HTTP请求检查视频是否可嵌入步骤1:
首先,您必须配置项目以使用Volley API。我们将使用这个库来发送和接收HTTP请求。打开
build.gradle
文件并粘贴链接:
dependencies {
...
compile 'com.android.volley:volley:1.0.0'
}
第二步:打开要从中发出请求的活动文件。添加以下变量:
String url_pre = "https://www.googleapis.com/youtube/v3/videos?id=";
String url_mid = "&key=";
String url_suf = "&part=status";
String video_id = "4pTwQKMrTt0"; //set this string be the id of your video
final String API_KEY = "your-api-key";
RequestQueue queue;
第三步:如果您还没有为您的项目创建一个API密钥,请转到生成一个API密钥。还要将
android.permission.INTERNET
添加到您的android清单权限中
第4步:现在我们必须初始化我们的
RequestQueue
并设置我们的JSON对象请求:
queue = Volley.newRequestQueue(this);
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url_pre + video_id + url_mid + API_KEY + url_suf, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject videoItem = (JSONObject) response.getJSONArray("items").get(0);
JSONObject status = videoItem.getJSONObject("status");
boolean isVideoEmbeddable = status.getBoolean("embeddable");
//isVideoEmbeddable will be equal to true if the video is embeddable, and false if it isn't.
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("My Class", "Volley Error: ",error);
}
});
queue.add(jsObjRequest);
queue=Volley.newRequestQueue(此);
JsonObjectRequest jsObjRequest=新的JsonObjectRequest(Request.Method.GET,url\u pre+video\u id+url\u mid+API\u KEY+url\u suf,null,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject videoItem=(JSONObject)response.getJSONArray(“items”).get(0);
JSONObject status=videoItem.getJSONObject(“状态”);
boolean isvideoembeddeble=status.getBoolean(“可嵌入”);
//如果视频可嵌入,IsVideoEmbeddeble将等于true;如果视频不可嵌入,IsVideoEmbeddeble将等于false。
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“我的班级”,“截击错误:”,错误);
}
});
add(jsObjRequest);
这个代码行得通,我试过了。如果您对此感到满意,请将此设置为正确答案,我为此做了大量工作:)请查看。显然,YouTube数据API允许您获取有关视频的信息。返回的数据将有一个名为“VideoEmbeddeble”的密钥。我希望这能帮上忙谢谢你的回答,但是你能帮我完成下一个任务吗?在我看来,我可以把GET{vide.getID())}&type=video&videoembeddeble=true&videosyndicatd=true&key={YOUR_API_key}放在上面来获取返回值。然后我需要弄清楚应该用什么替换上面代码中的{vide.getID())},以及如何检查它是否给我返回或错误。我的想法是:如果上面的GET返回一个值Do task 1。否则做任务2。你觉得怎么样?我会再调查一下。也许有更好的办法。(希望)一直在挠我的头,但仍然无法理解。我也不想要求太多,因为训练是完美的。哈哈。但是我需要知道如何使Http Get和如何使用Json解析它。今晚我将研究它(大约11小时),我很乐意帮助:)太棒了!你最好的!:)谢谢你的另一个好答案。我花了很多时间:)但我在“response.getJSONArray(“items”)上得到了红色下划线,上面写着“预期的数组类型”。我也不确定最后的单身部分。我想在这之后我的行为会像“if isEmbeddable=“true”{do stuff}对吗?你能帮我理解Mysingleton部分吗?:)是的,最后一部分是对的。我还更新了我的代码,这样你就不再需要singleton了。我明天会研究JSON错误。