Jak odtwarzać YouTube
filmy w mojej aplikacji? Chcę, aby play video
przesyłać strumieniowo bezpośrednio z YouTube bez pobierania. Ponadto podczas odtwarzania filmów chcę podać opcje menu. Nie chcę odtwarzać wideo przy użyciu domyślnej intencji. Jak mogę to zrobić?
84
Odpowiedzi:
To jest zdarzenie kliknięcia BTN
btnvideo.setOnClickListener(new OnClickListener() { public void onClick(View v) { startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo"))); Log.i("Video", "Video Playing...."); } });
ten typ otworzył się na innej stronie z youtube, gdzie możesz pokazać swój film
źródło
VideoView
wymaga bezwzględnego adresu URL filmu, który w przypadku YouTube prawdopodobnie nie jest dostępny.Kroki
Utwórz nową aktywność na ekranie swojego odtwarzacza (pełny ekran) z opcjami menu. Uruchom odtwarzacz mediów i interfejs użytkownika w różnych wątkach.
Do odtwarzania multimediów - ogólnie do odtwarzania audio / wideo w systemie Android jest dostępny interfejs API odtwarzacza multimediów. FILE_PATH to ścieżka do pliku - może to być strumień URL (youtube) lub lokalna ścieżka do pliku
Zobacz także: Aplikacja YouTube na Androida Play Video Intent już to szczegółowo omówiono.
źródło
Użyj YouTube Android Player API.
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.andreaskonstantakos.vfy.MainActivity"> <com.google.android.youtube.player.YouTubePlayerView android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" android:layout_centerHorizontal="true" android:id="@+id/youtube_player" android:layout_alignParentTop="true" /> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="195dp" android:visibility="visible" android:id="@+id/button" /> </RelativeLayout>
MainActivity.java:
package com.example.andreaskonstantakos.vfy; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.google.android.youtube.player.YouTubeBaseActivity; import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubePlayer; import com.google.android.youtube.player.YouTubePlayerView; public class MainActivity extends YouTubeBaseActivity { YouTubePlayerView youTubePlayerView; Button button; YouTubePlayer.OnInitializedListener onInitializedListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player); button = (Button) findViewById(R.id.button); onInitializedListener = new YouTubePlayer.OnInitializedListener(){ @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { youTubePlayer.loadVideo("Hce74cEAAaE"); youTubePlayer.play(); } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { } }; button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener); } }); } }
i klasa PlayerConfig.java:
package com.example.andreaskonstantakos.vfy; /** * Created by Andreas Konstantakos on 13/4/2017. */ public class PlayerConfig { PlayerConfig(){} public static final String API_KEY = "xxxxx"; }
Zastąp „Hce74cEAAaE” swoim identyfikatorem wideo z https://www.youtube.com/watch?v=Hce74cEAAaE . Pobierz swój API_KEY z Console.developers.google.com, a także zamień go na PlayerConfig.API_KEY. Aby uzyskać więcej informacji, postępuj zgodnie z następującym samouczkiem krok po kroku: https://www.youtube.com/watch?v=3LiubyYpEUk
źródło
Nie chciałem mieć aplikacji YouTube na urządzeniu, więc skorzystałem z tego samouczka:
http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html
... aby stworzyć ten kod w mojej aplikacji:
WebView mWebView; @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.video_webview); mWebView=(WebView)findViewById(R.id.videoview); //build your own src link with your video ID String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>"; mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); WebSettings ws = mWebView.getSettings(); ws.setJavaScriptEnabled(true); mWebView.loadData(videoStr, "text/html", "utf-8"); } //video_webview <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="0dp" android:layout_marginRight="0dp" android:background="#000000" android:id="@+id/bmp_programme_ll" android:orientation="vertical" > <WebView android:id="@+id/videoview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
To działało tak, jak chciałem. Nie odtwarza się automatycznie, ale wideo jest przesyłane strumieniowo w mojej aplikacji. Warto zauważyć, że niektóre filmy z ograniczeniami nie będą odtwarzane po osadzeniu.
źródło
Możesz użyć iframe zgodnie z opisem na https://developers.google.com/youtube/iframe_api_reference
Nie postępuję zgodnie z zaleceniami Google, ale to jest kod, którego używam i działa dobrze
public class CWebVideoView { private String url; private Context context; private WebView webview; private static final String HTML_TEMPLATE = "webvideo.html"; public CWebVideoView(Context context, WebView webview) { this.webview = webview; this.context = context; webview.setBackgroundColor(0); webview.getSettings().setJavaScriptEnabled(true); } public void load(String url){ this.url = url; String data = readFromfile(HTML_TEMPLATE, context); data = data.replace("%1", url); webview.loadData(data, "text/html", "UTF-8"); } public String readFromfile(String fileName, Context context) { StringBuilder returnString = new StringBuilder(); InputStream fIn = null; InputStreamReader isr = null; BufferedReader input = null; try { fIn = context.getResources().getAssets().open(fileName, Context.MODE_WORLD_READABLE); isr = new InputStreamReader(fIn); input = new BufferedReader(isr); String line = ""; while ((line = input.readLine()) != null) { returnString.append(line); } } catch (Exception e) { e.getMessage(); } finally { try { if (isr != null) isr.close(); if (fIn != null) fIn.close(); if (input != null) input.close(); } catch (Exception e2) { e2.getMessage(); } } return returnString.toString(); } public void reload() { if (url!=null){ load(url); } } }
w / asset mam plik o nazwie webvideo.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style> iframe { border: 0; position:fixed; width:100%; height:100%; bgcolor="#000000"; } body { margin: 0; bgcolor="#000000"; } </style> </head> <body> <iframe src="%1" frameborder="0" allowfullscreen></iframe> </body> </html>
a teraz definiuję widok sieciowy w moim głównym układzie
<WebView android:id="@+id/video" android:visibility="gone" android:background="#000000" android:layout_centerInParent="true" android:layout_width="match_parent" android:layout_height="match_parent" />
i używam CWebVideoView w mojej działalności
videoView = (WebView) view.findViewById(R.id.video); videoView.setVisibility(View.VISIBLE); cWebVideoView = new CWebVideoView(context, videoView); cWebVideoView.load(url);
źródło
Ta odpowiedź może być naprawdę późna, ale jest przydatna.
Możesz odtwarzać filmy z YouTube'a w samej aplikacji za pomocą android-youtube-player .
Niektóre fragmenty kodu:
Aby odtworzyć wideo z YouTube, które ma identyfikator wideo w adresie URL, po prostu wywołaj
OpenYouTubePlayerActivity
intencjęIntent intent = new Intent(null, Uri.parse("ytv://"+v), this, OpenYouTubePlayerActivity.class); startActivity(intent);
gdzie v jest identyfikatorem wideo.
Dodaj następujące uprawnienia w pliku manifestu:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
a także zadeklaruj tę aktywność w pliku manifestu:
<activity android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
Więcej informacji można znaleźć w pierwszych częściach tego pliku kodu.
Mam nadzieję, że to pomoże każdemu!
źródło
Google ma interfejs API odtwarzacza YouTube Android, który umożliwia włączenie funkcji odtwarzania wideo do aplikacji na Androida. Samo API jest bardzo łatwe w użyciu i działa dobrze. Na przykład poniżej opisano, jak utworzyć nowe działanie do odtwarzania wideo za pomocą interfejsu API.
Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false); startActivity(intent);
Zobacz to, aby uzyskać więcej informacji.
źródło
możesz użyć tego projektu do odtwarzania dowolnego wideo z YouTube w aplikacji na Androida. Teraz dla innego wideo lub identyfikatora wideo ... możesz to zrobić https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ gdzie eminemvevo = kanał .
po znalezieniu identyfikatora wideo możesz go umieścić
cueVideo("video_id")
src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) { if (!wasRestored) { player.cueVideo("wKJ9KzGQq0w"); } }
Specjalnie do lepszego odczytania tego video_id otwórz to i jako plik xml [
1st_file
] na pulpicie po utworzeniu nowego pliku Xml w twoimproject
lub załadowaniu tego [1st_file
] zapisanego pliku do twojego projektu i kliknięciu prawym przyciskiem myszy w nim, i otwórz go za pomocą pliku xml_editor, tutaj znajdziesz identyfikator wideo konkretnego wideo.źródło
MediaPlayer mp=new MediaPlayer(); mp.setDataSource(path); mp.setScreenOnWhilePlaying(true); mp.setDisplay(holder); mp.prepare(); mp.start();
źródło
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM")); startActivity(intent);
źródło