Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何检查Youtube视频是否可嵌入?_Android_Android Studio_Video_Youtube - Fatal编程技术网

Android 如何检查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

我正在开发一个应用程序,如果视频是可嵌入的,它将播放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

好的,所以我终于,终于找到了正确的方法

要获取此信息,请使用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错误。