Aplicación para Android de YouTube

He creado una aplicación donde puedes descargar videos de YouTube para Android. Ahora, lo quiero para que si juegues un video en la aplicación nativa de YouTube, también puedes descargarlo. Para ello, necesito conocer la Intención que la aplicación nativa de YouTube emite para poder reproducir la aplicación de YouTube.
Podría hacer este easially si tenía el programa de YouTube en mi emulador, así que mi 1ra pregunta es:
1. ¿Puedo descargar la aplicación de YouTube para mi emulador o …
2. ¿Cuál es la intención utilizada cuando el usuario selecciona un video para su reproducción.

Esto funcionará en un dispositivo pero no en el emulador según la respuesta de Lemmy .

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM"))); 

Y cómo sobre esto:

 public void watchYoutubeVideo(String id){ Intent appIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + id)); Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + id)); try { startActivity(appIntent); } catch (ActivityNotFoundException ex) { startActivity(webIntent); } } 

He aquí cómo solucioné este problema:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id); startActivity(intent); 

Ahora que he hecho más investigaciones, parece que sólo necesitaba 'vnd.youtube:VIDEO_ID' en lugar de dos barras después de los dos puntos (':' vs. ': //'):

http://it-ride.blogspot.com/2010/04/android-youtube-intent.html

He probado la mayoría de las sugerencias aquí y realmente no funcionan muy bien con todos los métodos supuestamente "directos" que generan excepciones. Supongo que, con mi método, si la aplicación de YouTube no está instalada, el sistema operativo tiene una posición de rechazo por defecto de algo que no sea bloquear la aplicación. La aplicación, teóricamente, sólo va en los dispositivos con la aplicación de YouTube en ellos de todos modos, por lo que este debe ser un problema no.

Utilizar mi código .. Puedo jugar el vídeo de youtube usando este código … usted apenas necesita proporcionar la identificación video del youtube en la variable del "videoId".

 String videoId = "Fee5vbFLYM4"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); intent.putExtra("VIDEO_ID", videoId); startActivity(intent); 
  Intent videoClient = new Intent(Intent.ACTION_VIEW); videoClient.setData(Uri.parse("http://m.youtube.com/watch?v="+videoId)); startActivityForResult(videoClient, 1234); 

Donde videoId es el id de vídeo del video de youtube que se debe reproducir. Este código funciona bien en Motorola Milestone.

Pero, básicamente, lo que podemos hacer es comprobar qué actividad se carga al iniciar la aplicación de Youtube y, en consecuencia, sustituir el nombre de paquete y el className.

El Youtube (y la aplicación de mercado) sólo se supone que se utiliza con ROM especiales, que Google lanzó para el G1 y el G2. Por lo tanto, no se puede ejecutar en una OpenSource-ROM, como la que se utiliza en el Emulador, por desgracia. Bueno, tal vez usted puede, pero no de una manera oficialmente apoyada.

EDIT: La siguiente implementación demostró tener problemas en al menos algunos dispositivos HTC (se estrelló). Por eso no utilizo setclassname y me quedo con el menú selector de acciones. Desaconsejo fuertemente usar mi puesta en práctica vieja.

A continuación se presenta la antigua implementación:

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(youtubelink)); if(Utility.isAppInstalled("com.google.android.youtube", getActivity())) { intent.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity"); } startActivity(intent); 

Donde Utilidad es mi propia clase de utilidad personal con el método siguiente:

 public static boolean isAppInstalled(String uri, Context context) { PackageManager pm = context.getPackageManager(); boolean installed = false; try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); installed = true; } catch (PackageManager.NameNotFoundException e) { installed = false; } return installed; } 

Primero compruebo si youtube está instalado, si está instalado, le digo a android qué paquete prefiero abrir mi intención.

Lo encontré:

 03-18 12:40:02.842: INFO/ActivityManager(68): Starting activity: Intent { action=android.intent.action.VIEW data=(URL TO A FLV FILE OF THE VIDEO) type=video/* comp={com.google.android.youtube/com.google.android.youtube.YouTubePlayer} (has extras) } 

Respondiendo a la vieja pregunta, sólo para informarles que el paquete ha cambiado, heres la actualización

 Intent videoClient = new Intent(Intent.ACTION_VIEW); videoClient.setData("VALID YOUTUBE LINK WITH HTTP"); videoClient.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity"); startActivity(videoClient); 

Esto funciona muy bien, pero cuando se llama Normal Intent con ACTION_VIEW con URL de youtube válida, el usuario obtiene el selector de actividad de todos modos.

Youtube ahora tiene un api de jugador, usted debe intentar eso.

https://developers.google.com/youtube/android/player/

 /** * Intent to open a YouTube Video * * @param pm * The {@link PackageManager}. * @param url * The URL or YouTube video ID. * @return the intent to open the YouTube app or Web Browser to play the video */ public static Intent newYouTubeIntent(PackageManager pm, String url) { Intent intent; if (url.length() == 11) { // youtube video id intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + url)); } else { // url to video intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); } try { if (pm.getPackageInfo("com.google.android.youtube", 0) != null) { intent.setPackage("com.google.android.youtube"); } } catch (NameNotFoundException e) { } return intent; } 

La manera más segura de ejecutar videos en una aplicación diferente es primero intentar resolver el paquete, es decir, comprobar que la aplicación está instalada en el dispositivo. Así que si quieres ejecutar un video en youtube harías algo como esto:

 public void playVideo(String key){ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + key)); // Check if the youtube app exists on the device if (intent.resolveActivity(getPackageManager()) == null) { // If the youtube app doesn't exist, then use the browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + key)); } startActivity(intent); } 

También puede WebViewClient al WebViewClient

 wvClient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("youtube:")) { String youtubeUrl = "http://www.youtube.com/watch?v=" + url.Replace("youtube:", ""); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(youtubeUrl))); } return false; } 

Funcionó bien en mi aplicación.

Prueba esto:

 public class abc extends Activity implements OnPreparedListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM"))); @Override public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub } } } 

Prueba esto,

  WebView webview = new WebView(this); String htmlString = "<html> <body> <embed src=\"youtube link\"; type=application/x-shockwave-flash width="+widthOfDevice+" height="+heightOfDevice+"> </embed> </body> </html>"; webview.loadData(htmlString ,"text/html", "UTF-8"); 
  • Cómo obtener el evento de la finalización del video de youtube en android webview
  • ¿Es posible desactivar la pantalla completa para youtube api en android?
  • Uso de Youtube Intentar iniciar un video desde un punto de inicio definido
  • Phonegap: ¿Cómo evitar que los vídeos de youtube se reproduzcan después de pulsar el botón de encendido?
  • Youtube iframe player no mostrará videos en android 4.x WebView
  • Android: dibuja el video de YouTube en SurfaceTexture
  • Android WebView - Los vídeos de Youtube que no se reproducen dentro de la aplicación
  • Los vídeos de Youtube incrustados en la vista Web de Android no se reproducen en el formato SINGLE_COLUMN
  • Cómo actualizar Youtube Player View onItemClickListener () en un ListView
  • Cómo iframe un video de youtube en HTML para teléfonos Android para poder ver y rotar a pantalla completa?
  • Filtro de intenciones para Media Player (Reproducción de vídeo de Youtube)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.