2017-05-15 6 views
0

Ich entwickle eine App, die Youtube-Videos wiedergeben kann, wenn das Video einbettbar ist. Sonst möchte ich es in Youtube öffnen.Wie überprüfe ich, ob ein Youtube-Video einbettbar ist?

für ihn Mein Code sieht wie folgt aus:

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()))); 

     } 
    }); 

jemand kann mir helfen? Muss ich Ihnen mehr Code zur Verfügung stellen?

Thx

+1

Werfen Sie einen Blick auf [diese] (https://developers.google.com/youtube/v3/docs/Suche/Liste). Offenbar können Sie mit der YouTube-Daten-API Informationen zu einem Video abrufen. Die zurückgegebenen Daten haben einen Schlüssel namens "videoEmbeddable". Ich hoffe, das hilft –

+0

Vielen Dank für die Antwort, aber können Sie mir bei der nächsten Aufgabe helfen? So wie ich es sehe ich GET setzen können https://www.googleapis.com/youtube/v3/search?part=id&maxResults=1&q={vide.getID())}&type=video&videoEmbeddable=true&videoSyndicated=true&key = {YOUR_API_KEY} Um die Rückkehr zu erhalten. Dann muss ich herausfinden, was ich im obigen Code mit {vide.getID())} ersetzen soll, und auch, wie ich überprüfen kann, ob es mir eine Rückgabe oder einen Fehler gibt. Ich denke wie: Wenn über GET einen Wert zurückgibt, tun Sie Aufgabe 1. Else tun Aufgabe 2. Was denkst du? –

+0

Ich werde ein bisschen mehr hineinsehen. Es könnte einen besseren Weg geben, es zu tun. (hoffentlich) –

Antwort

0

Ok, so endlich habe ich endlich herausgefunden, wie diese richtig zu machen!

diese Informationen zu erhalten, eine HTTP GET Anfrage mit Ihrem API-Schlüssel machen und die Video-ID an dem API v3 YouTube Daten:

https://www.googleapis.com/youtube/v3/videos?id=<VIDEO ID>&key=<YOUR API KEY>&part=status

[EDIT] Wie um zu überprüfen, ob ein Video embeddable ist mit der YouTube Data API v3 von android mit HTTP-Anforderungen

Schritt 1:
das Wichtigste zuerst, müssen Sie Ihr Projekt konfigurieren um die Volley-API zu verwenden. Wir werden diese Bibliothek verwenden, um HTTP-Anfragen zu senden und zu empfangen. Öffnen Sie Ihre build.gradle Datei und fügen Sie den Link:

dependencies { 
    ... 
    compile 'com.android.volley:volley:1.0.0' 
} 

Schritt 2:
Öffnen Sie Ihre Aktivität Datei, in der Sie die Anforderung aus machen wollen. Fügen Sie die folgenden Variablen:

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; 

Schritt 3:
Wenn Sie nicht einen API-Schlüssel für Ihr Projekt noch gemacht haben, den Kopf über die Google Developer Console eine zu erzeugen. Fügen Sie auch android.permission.INTERNET zu Ihren Android-Manifestberechtigungen hinzu.

Schritt 4:
Jetzt müssen wir unsere RequestQueue und Einrichtung unserer JSON Object Request initialisieren:

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

Dieser Code funktioniert, ich habe es versucht. Wenn Sie damit zufrieden sind, stellen Sie dies bitte als die richtige Antwort ein, ich gebe viel Arbeit hinein :)

+0

Ich kratze mich am Kopf, kann es aber immer noch nicht herausfinden. Ich wollte auch nicht zu viel fragen, denn Training macht den Meister. Haha. Aber ich muss wissen, wie man die Htt Get und wie man es mit Json zu analysieren. –

+0

Ich werde heute Abend (in etwa 11 Stunden) hineinschauen Ich bin glücklich zu helfen :) –

+0

Awesome! Du bist der beste! :) –

Verwandte Themen