¿Cómo reproduzco YouTube
videos en mi aplicación? Quiero play video
transmitirlo directamente desde YouTube sin descargarlo. Además, mientras reproduzco videos, quiero proporcionar opciones de menú. No quiero reproducir videos con la intención predeterminada. ¿Cómo puedo hacer esto?
84
Respuestas:
Este es el evento btn click
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...."); } });
este tipo se abrió en otra página con youtube donde puedes mostrar tu video
fuente
VideoView
requiere la URL absoluta del video, que en el caso de YouTube probablemente no esté disponible.Pasos
Cree una nueva actividad, para la pantalla de su jugador (pantalla completa) con opciones de menú. Ejecute el reproductor multimedia y la interfaz de usuario en diferentes hilos.
Para reproducir medios: en general, para reproducir audio / video, hay una api de mediaplayer en Android. FILE_PATH es la ruta del archivo; puede ser una secuencia de url (youtube) o una ruta de archivo local
Verifique también: la aplicación de YouTube para Android Play Video Intent ya lo ha discutido en detalle.
fuente
Utilice la API del reproductor de Android de YouTube.
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); } }); } }
y la clase 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"; }
Reemplaza "Hce74cEAAaE" con tu ID de video de https://www.youtube.com/watch?v=Hce74cEAAaE . Obtenga su API_KEY de Console.developers.google.com y también reemplácela en PlayerConfig.API_KEY. Para obtener más información, puede seguir el siguiente tutorial paso a paso: https://www.youtube.com/watch?v=3LiubyYpEUk
fuente
No quería tener la aplicación de YouTube presente en el dispositivo, así que usé este tutorial:
http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html
... para producir este código en mi aplicación:
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>
Esto funcionó exactamente como lo quería. No se reproduce automáticamente, pero el video se transmite dentro de mi aplicación. Vale la pena señalar que algunos videos restringidos no se reproducirán cuando estén integrados.
fuente
Puede utilizar iframe como se describe en https://developers.google.com/youtube/iframe_api_reference
No sigo los consejos de Google exactamente, pero este es el código que estoy usando y funciona bien
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); } } }
en / assets tengo un archivo llamado 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>
y ahora defino una vista web dentro de mi diseño principal
<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" />
y uso CWebVideoView dentro de mi actividad
videoView = (WebView) view.findViewById(R.id.video); videoView.setVisibility(View.VISIBLE); cWebVideoView = new CWebVideoView(context, videoView); cWebVideoView.load(url);
fuente
Esta respuesta podría llegar muy tarde, pero es útil.
Puede reproducir videos de youtube en la propia aplicación usando android-youtube-player .
Algunos fragmentos de código:
Para reproducir un video de youtube que tiene una identificación de video en la URL, simplemente llame a la
OpenYouTubePlayerActivity
intenciónIntent intent = new Intent(null, Uri.parse("ytv://"+v), this, OpenYouTubePlayerActivity.class); startActivity(intent);
donde v es la identificación del video.
Agregue los siguientes permisos en el archivo de manifiesto:
<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"/>
y también declarar esta actividad en el archivo de manifiesto:
<activity android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
Se puede obtener más información en las primeras partes de este archivo de código.
¡Espero que ayude a alguien!
fuente
Google tiene una API de YouTube para Android que le permite incorporar la funcionalidad de reproducción de video en sus aplicaciones de Android. La API en sí es muy fácil de usar y funciona bien. Por ejemplo, aquí se explica cómo crear una nueva actividad para reproducir un video usando la API.
Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false); startActivity(intent);
Vea esto para más detalles.
fuente
Puede usar este proyecto para reproducir cualquier video de You Tube, en su aplicación de Android. Ahora para otro video, o ID de video ... puedes hacer esto https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ donde eminemvevo = canal .
después de encontrar la identificación de video, puede poner esa identificación en
cueVideo("video_id")
src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) { if (!wasRestored) { player.cueVideo("wKJ9KzGQq0w"); } }
Y especialmente para leer ese video_id de una mejor manera, ábralo y como un
1st_file
archivo xml [ ] en su escritorio después de que cree un nuevo archivo Xml en suproject
o cargue ese [1st_file
] archivo guardado en su proyecto, y haga clic derecho en él, y ábralo con el archivo xml_editor, aquí encontrará la identificación de video del video en particular.fuente
MediaPlayer mp=new MediaPlayer(); mp.setDataSource(path); mp.setScreenOnWhilePlaying(true); mp.setDisplay(holder); mp.prepare(); mp.start();
fuente
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM")); startActivity(intent);
fuente