如何检查Youtube视频是否可嵌入?

时间:2017-05-15 20:24:31

标签: android android-studio video youtube

我正在开发一个可以播放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

1 个答案:

答案 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);

此代码有效,我试过了。如果您对此感到满意,请将其设置为正确答案,我将大量工作投入其中:)

相关问题