Paso a paso: Aplicación de video simple que usa el SDK nativo para Android

En este tema, utilizará Android Studio y Brightcove Player SDK para Android para crear una aplicación que reproduzca un video de una cuenta de Brightcove Video Cloud, así como videos de una lista de reproducción de Brightcove Video Cloud.

Resumen

Después de completar este inicio rápido, debería poder:

  • Cree un proyecto y agregue Brightcove Player SDK para Android con Gradle.
  • Modifique el diseño para incluir un BrightcoveExoPlayerVideoView.
  • Agregar al onCreate() método para reproducir videos. de diferentes fuentes.

Audiencia

Desarrolladores que usan Android Studio para el desarrollo y están interesados en usar Brightcove Player SDK para Android en una aplicación de Android.

Requisitos previos

Un conocimiento mínimo del desarrollo de aplicaciones Java y Android.

Prepararse

Prepárese para el desarrollo instalando Android Studio

  1. Descargar el Estudio de Android solicitud.
  2. Siga las instrucciones de Android Studio para instalar la aplicación.

Crea un proyecto

Cree un proyecto en Android Studio y luego vincúlelo al SDK del reproductor con Gradle.

Crea un proyecto en Android Studio

  1. Abra Android Studio.
  2. En el cuadro de diálogo Bienvenido a Android Studio , seleccione Nuevo proyecto .
    Seleccionar nuevo proyecto
    Seleccionar nuevo proyecto
  3. En el cuadro de diálogo Nuevo proyecto , seleccione Actividad vacía y haga clic en Siguiente .
    Elija actividad vacía
    Elija actividad vacía
  4. Proporcione valores para el Nombre , Nombre del paquete , Ubicación para guardar , Idioma y SDK mínimo . En este inicio rápido se utilizan los valores que se muestran a continuación:

    Nuevo proyecto
    Nuevo proyecto
  5. Haz clic en Finalizar.
  6. Android Studio funcionará por un tiempo y eventualmente mostrará el estado inicial del proyecto.

    Proyecto de estudio
    Proyecto de estudio

Utilice Gradle para vincularse con Brightcove Player SDK para Android

Dado que Gradle está integrado con Android Studio, lo usará para agregar el SDK nativo para Android a su proyecto.

  1. En la vista de Android , encontrará los archivos de su proyecto.
  2. Expanda el grupo Gradle Scripts y abra el settings.gradle archivo.
    Crear archivo gradle
    Crear archivo gradle
  3. En el repositories sección, agregue una entrada para el repositorio de Brightcove Maven.
    dependencyResolutionManagement {
      repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
      repositories {
          google()
          mavenCentral()
          maven {
                url 'https://repo.brightcove.com/releases'
          }
      }
    }
    rootProject.name = "PlayVideos"
    include ':app'
  4. En el grupo Gradle Scripts , abra el build.gradle archivo asociado con el módulo actual en su proyecto PlayVideos.

    Crear archivo gradle
    Crear archivo gradle
  5. En el build.gradle archivo, busque el dependencies sección. Incluye la última versión de Native SDK para Android. Reemplazar el valor 8.0.0 a continuación con la última versión del SDK, que se puede encontrar en el Descripción general: SDK nativo de Brightcove para Android documento.
    dependencies {
      implementation 'androidx.appcompat:appcompat:1.4.1'
      implementation 'com.google.android.material:material:1.5.8'
      implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
      testImplementation 'junit:junit:4.13.2'
      androidTestImplementation 'androidx.test.ext:junit:1.1.3'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.8'
      implementation "com.brightcove.player:exoplayer2:8.0.0"
    }
     

    El uso de una versión de dependencia dinámica con el carácter '+' no se recomienda en la comunidad de Gradle. El uso de versiones dinámicas conlleva un riesgo significativo para su proceso de compilación, ya que las API más nuevas pueden volverse inesperadamente incompatibles con el código fuente de su aplicación.

  6. En el grupo Gradle Scripts , abra el gradle.properties archivo.

    propiedades gradle
    propiedades gradle
    En gradle.properties , modificar el properties con el siguiente código. El código de muestra se puede encontrar en el repositorio android-player-samples .
    android.enableJetifier=true
    android.useAndroidX=true
    anpVersion=8.0.0
    org.gradle.jvmargs=-XX\:MaxPermSize\=512m
     
  7. Sincronice el proyecto para recoger los cambios del archivo Gradle.

Codifique la aplicación

A continuación, escribirá el código para diseñar la aplicación, crear la lista de videos y reproducir los videos.

Definir el diseño de la aplicación

Incluso con la actividad vacía, obtendrá una simple TextView diseño. Reemplace esto con el BrightcoveExoPlayerVideoView , que define la vista del jugador.

  1. Abre el archivo app/res/layout/activity_main.xml y haga clic en Código .

    Diseño de archivo XML
    Diseño de archivo XML
  2. Eliminar el existente TextView elemento y agregue un BrightcoveExoPlayerVideoView sección para que el XML resultante aparezca de la siguiente manera. Tenga en cuenta para su uso posterior que el id de la vista se llama brightcove_video_view .

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
      <com.brightcove.player.view.BrightcoveExoPlayerVideoView
          android:id="@+id/brightcove_video_view"
          android:layout_width="match_parent"
          android:layout_height="280dp"
          android:layout_gravity="center_horizontal|top"/>
    </androidx.constraintlayout.widget.ConstraintLayout>

Habilite la aplicación para usar Internet

  1. Abre el app/manifests/AndroidManifest.xml expediente.
  2. Justo después del <application> bloque de código, pero por encima del final </manifest> etiqueta, inserte lo siguiente para habilitar el acceso a Internet.

    <uses-permission android:name="android.permission.INTERNET"/>
  3. Sincronice el proyecto para reconstruirlo y recoger estos cambios.

Crea la vista y reproduce un video

  1. Volver a la MainActivity.java expediente.

    Archivo de actividad principal
    Archivo de actividad principal
  2. Para el MainActivity clase, extender el BrightcovePlayer clase. Esto proporciona una gestión del ciclo de vida predeterminada para su aplicación.

    public class MainActivity extends BrightcovePlayer {
  3. A medida que comienza a escribir BrightcovePlayer , deberías ver opciones para seleccionar. Haciendo doble clic en el BrightcovePlayer La opción agregará un import declaración.

    BrightcovePlayer clase
    BrightcovePlayer clase
  4. Localizar el onCreate() función. Antes de entrar en la superclase, asigne el brightcoveVideoView como sigue:

    • Crea una instancia de BrightcoveExoPlayerVideoView y asociarlo con el diseño. En la mayoría de los casos, utilizará la vista exoplayer. Para obtener más detalles, consulte la Elegir una vista de video documento.

    • Al extender el BrightcovePlayer , debemos asignar el brightcoveVideoView antes de entrar en la superclase. Esto permite cierta gestión del ciclo de vida del reproductor de video.
    public class MainActivity extends BrightcovePlayer {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
        super.onCreate(savedInstanceState);

    Cuando pegue el código resaltado arriba, presione las teclas de opción + retorno para agregar el import declaración para el BrightcoveExoPlayerVideoView clase.

  5. A continuación, debe enviar su ID de cuenta de jugador de Brightcove a Brightcove mediante el análisis setAccount() método.

    Analytics analytics = brightcoveVideoView.getAnalytics();
    analytics.setAccount("your account Id");
  6. Opcional: Si anula el BrightcoveExoPlayerVideoView class o no utilice el reproductor y el catálogo de Brightcove, debe enviar su ID de editor de Video Cloud a Video Cloud Analytics. Puede hacer esto usando el análisis setAccount() método. Esto le permite ver los datos de esta aplicación en Video Cloud Analytics.

    Analytics analytics = brightcoveVideoView.getAnalytics();
    analytics.setAccount("your account Id");

  7. Cree un objeto de video a partir de su video alojado en un servidor remoto. Selecciona el DeliveryType para que coincida con el tipo de video que tienes.

    Video video = Video.createVideo("https://sdks.support.brightcove.com/assets/videos/hls/greatblueheron/greatblueheron.m3u8",
      DeliveryType.HLS);
  8. Cargue una imagen remota para usarla como imagen de póster antes de que comience la reproducción de video.

    try {
      java.net.URI myposterImage = new java.net.URI("https://sdks.support.brightcove.com/assets/images/general/Great-Blue-Heron.png");
      video.getProperties().put(Video.Fields.STILL_IMAGE_URI, myposterImage);
    } catch (URISyntaxException e) {
      e.printStackTrace();
    }
  9. Agregue el video a la vista e inicie la reproducción del video.

    brightcoveVideoView.add(video);
    brightcoveVideoView.start();
  10. El código debería tener un aspecto similar a este:

    package com.brightcove.playvideos;
    
      import android.os.Bundle;
      
      import com.brightcove.player.model.DeliveryType;
      import com.brightcove.player.model.Video;
      import com.brightcove.player.view.BrightcoveExoPlayerVideoView;
      import com.brightcove.player.view.BrightcovePlayer;
      
      import java.net.URISyntaxException;
      
      public class MainActivity extends BrightcovePlayer {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
            setContentView(R.layout.activity_main);
            // Create the video view
            brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
            super.onCreate(savedInstanceState);
    
            // Optional: For Brightcove Player customers to register their apps
            Analytics analytics = brightcoveVideoView.getAnalytics();
            analytics.setAccount("your account Id");
      
            // Define a video from a remote server
            Video video = Video.createVideo("https://sdks.support.brightcove.com/assets/videos/hls/greatblueheron/greatblueheron.m3u8",
              DeliveryType.HLS);
      
            // Load a remote poster image
            try {
              java.net.URI myposterImage = new java.net.URI("https://sdks.support.brightcove.com/assets/images/general/Great-Blue-Heron.png");
              video.getProperties().put(Video.Fields.STILL_IMAGE_URI, myposterImage);
            } catch (URISyntaxException e) {
              e.printStackTrace();
            }
      
            // Add video to the view
            brightcoveVideoView.add(video);
            // Start video playback
            brightcoveVideoView.start();
      
          }
      }
  11. Ejecute o depure la aplicación para ver la reproducción de video.

Obtener y reproducir un video

En esta sección, utilizará el Catalog class para recuperar un solo video del servidor de Video Cloud y luego reproducirlo.

La com.brightcove.player.edge.Catalog La clase proporciona métodos asincrónicos para recuperar videos y listas de reproducción de la API de reproducción de Brightcove. Esta es la API más reciente y recomendada para recuperar contenido de su biblioteca de Video Cloud.

Eliminar el código innecesario

  1. Ya no se necesita algo de código de la aplicación anterior. En el onCreate() método, elimine todo el código después de ingresar a la superclase.
  2. Confirmar tu onCreate() El método aparece de la siguiente manera:

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
      }
    }

Recuperar un video del Catálogo

  1. Desde su cuenta de Video Cloud Studio, recopile la siguiente información:
    • ID de la cuenta
    • ID de vídeo
    • Clave de política
     
  2. Defina sus valores personalizados en su proyecto. Abre el res/values/strings.xml archivo y actualícelo con sus valores:

    <?xml version="1.0" encoding="utf-8"?>
      <resources>
    
          <!-- Application name -->
          <string name="app_name">PlayVideos</string>
    
          <!-- A sample Brightcove Edge Account ID -->
          <string name="account">your account id</string>
    
          <!-- A sample Brightcove Edge Policy Key -->
          <string name="policy">your policy key</string>
    
          <!-- A sample Brightcove Video ID -->
          <string name="videoId">your video id</string>
    
      </resources>
  3. Volver a la MainActivity.java y obtenga el emisor de eventos del SDK.
    // Get the event emitter from the SDK
    EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
  4. Cree una solicitud de catálogo para obtener un video del servicio Brightcove Edge, usando sus valores definidos para ID de cuenta y Clave de política del paso anterior.

    // Create a catalog request to fetch a video
    String account = getString(R.string.account);
    Catalog catalog = new Catalog.Builder(eventEmitter, account)
      .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
      .setPolicy(getString(R.string.policy))
      .build();
  5. Utilice el catálogo findVideoByID() método con su ID de video y un VideoListener para la devolución de llamada.

    En el onVideo() método, agregue el video a brightcoveVideoView , luego inicie el video.

    // Get the video by ID
    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
      @Override
      public void onVideo(Video video) {
        // Add video to the view
        brightcoveVideoView.add(video);
        // Start video playback
        brightcoveVideoView.start();
      }
    });
  6. El código completo para su MainActivity la clase debería ser similar a esto:

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
        // Get the event emitter from the SDK
        EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
        // Create a catalog request to fetch a video
        String account = getString(R.string.account);
        Catalog catalog = new Catalog.Builder(eventEmitter, account)
          .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
          .setPolicy(getString(R.string.policy))
          .build();
    
        // Get the video by ID
        catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
          @Override
          public void onVideo(Video video) {
            // Add video to the view
            brightcoveVideoView.add(video);
            // Start video playback
            brightcoveVideoView.start();
          }
        });
      }
    }
  7. Ejecute la aplicación para confirmar que se reproduce el video.

Obtén y reproduce una lista de reproducción

En esta sección, utilizará el Catalog class para recuperar una lista de reproducción del servidor de Video Cloud y luego reproducir los videos en la lista de reproducción.

La com.brightcove.player.edge.Catalog La clase proporciona métodos asincrónicos para recuperar videos y listas de reproducción de la API de reproducción de Brightcove. Esta es la API más reciente y recomendada para recuperar contenido de su biblioteca de Video Cloud.

Eliminar el código innecesario

  1. Ya no se necesita algo de código de la aplicación anterior. Eliminar la llamada al catálogo findVideoByID() método, y el asociado VideoListener función de devolución de llamada anónima.

    // Get the video by ID
    catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
    
      @Override
      public void onVideo(Video video) {
        // Add video to the view
        brightcoveVideoView.add(video);
        // Start video playback
        brightcoveVideoView.start();
      }
    });

Recuperar una lista de reproducción del catálogo

  1. La instancia de catálogo existente funcionará para recuperar una lista de reproducción, por lo que no son necesarios cambios a estas líneas de código:

    // Get the event emitter from the SDK
    EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
    // Create a catalog request to fetch a video
    String account = getString(R.string.account);
    Catalog catalog = new Catalog.Builder(eventEmitter, account)
      .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
      .setPolicy(getString(R.string.policy))
      .build();
  2. En Video Cloud Studio's Medios de comunicación módulo, seleccione una lista de reproducción y copie el ID de lista de reproducción.
  3. Abre el res/values/strings.xml archivo y agregue una entrada para su ID de lista de reproducción:

      <?xml version="1.0" encoding="utf-8"?>
        <resources>
      
            <!-- Application name -->
            <string name="app_name">PlayVideos</string>
      
            <!-- A sample Brightcove Edge Account ID -->
            <string name="account">your account id</string>
      
            <!-- A sample Brightcove Edge Policy Key -->
            <string name="policy">your policy key</string>
      
            <!-- A sample Brightcove Playlist ID -->
            <string name="playlistId">your playlist id</string>
      
        </resources>
  4. Utilice el catálogo findPlaylistByID() método usando su ID de lista de reproducción y un PlaylistListener para la devolución de llamada.

    En el onPlaylist() método, recupere los videos de la lista de reproducción, agregue todos los videos a brightcoveVideoView , luego inicie el primer video.

    // Get the playlist by ID
    String playlist = getString(R.string.playlistId);
    catalog.findPlaylistByID(playlist, new PlaylistListener() {
      @Override
      public void onPlaylist(Playlist playlist) {
        // Add playlist to the view
        brightcoveVideoView.addAll(playlist.getVideos());
        // Start playback
        brightcoveVideoView.start();
      }
    });
  5. El código completo para su MainActivity la clase debería ser similar a esto:

    public class MainActivity extends BrightcovePlayer {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        // Create the video view
        brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
    
        super.onCreate(savedInstanceState);
    
        // Get the event emitter from the SDK
        EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
    
        // Create a catalog request to fetch a video
        String account = getString(R.string.account);
        Catalog catalog = new Catalog.Builder(eventEmitter, account)
          .setBaseURL(Catalog.DEFAULT_EDGE_BASE_URL)
          .setPolicy(getString(R.string.policy))
          .build();
    
        // Get the playlist by ID
        String playlist = getString(R.string.playlistId);
        catalog.findPlaylistByID(playlist, new PlaylistListener() {
          @Override
          public void onPlaylist(Playlist playlist) {
            // Add playlist to the view
            brightcoveVideoView.addAll(playlist.getVideos());
            // Start playback
            brightcoveVideoView.start();
          }
        });
      }
    }
  6. Ejecute la aplicación para confirmar varios videos de la reproducción de la lista de reproducción.

¡Listo! Gracias por trabajar con el inicio rápido del SDK de Android.

Para obtener ejemplos completos de proyectos, consulte las muestras de reproductores de Android .