我正在开发一个可以播放youtube视频的应用,如果视频是可嵌入的。另外我想在Youtube上打开它。
我的代码如下:
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
答案 0 :(得分:1)
好的,所以我终于终于想出了如何正确地做到这一点!
要获取此信息,请使用您的API密钥发送HTTP GET
请求,并将视频ID发送至YouTube Data API v3:
https://www.googleapis.com/youtube/v3/videos?id=<VIDEO ID>&key=<YOUR API KEY>&part=status
[编辑] 如何使用来自Android的YouTube数据API v3使用HTTP请求检查视频是否可嵌入
步骤1:
首先,您必须将项目配置为使用Volley API。我们将使用此库来发送和接收HTTP请求。打开build.gradle
文件并粘贴链接:
dependencies {
...
compile 'com.android.volley:volley:1.0.0'
}
第2步:
打开要从中发出请求的活动文件。添加以下变量:
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;
第3步:
如果您还没有为项目创建API密钥,请转到Google Developer Console生成一个。同时将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);
此代码有效,我试过了。如果您对此感到满意,请将其设置为正确答案,我将大量工作投入其中:)