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
- Descargar el Estudio de Android solicitud.
- 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
- Abra Android Studio.
- En el cuadro de diálogo Bienvenido a Android Studio , seleccione Nuevo proyecto .
- En el cuadro de diálogo Nuevo proyecto , seleccione Actividad vacía y haga clic en Siguiente .
-
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:
- Haz clic en Finalizar.
-
Android Studio funcionará por un tiempo y eventualmente mostrará el estado inicial del proyecto.
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.
- En la vista de Android , encontrará los archivos de su proyecto.
- Expanda el grupo Gradle Scripts y abra el
settings.gradle
archivo. - 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'
-
En el grupo Gradle Scripts , abra el
build.gradle
archivo asociado con el módulo actual en su proyecto PlayVideos. - En el
build.gradle
archivo, busque eldependencies
sección. Incluye la última versión de Native SDK para Android. Reemplazar el valor8.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.
-
En el grupo Gradle Scripts , abra el
Engradle.properties
archivo.gradle.properties
, modificar elproperties
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
- 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.
-
Abre el archivo
app/res/layout/activity_main.xml
y haga clic en Código . -
Eliminar el existente
TextView
elemento y agregue unBrightcoveExoPlayerVideoView
sección para que el XML resultante aparezca de la siguiente manera. Tenga en cuenta para su uso posterior que elid
de la vista se llamabrightcove_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
- Abre el
app/manifests/AndroidManifest.xml
expediente. -
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"/>
- Sincronice el proyecto para reconstruirlo y recoger estos cambios.
Crea la vista y reproduce un video
-
Volver a la
MainActivity.java
expediente. -
Para el
MainActivity
clase, extender elBrightcovePlayer
clase. Esto proporciona una gestión del ciclo de vida predeterminada para su aplicación.public class MainActivity extends BrightcovePlayer {
-
A medida que comienza a escribir
BrightcovePlayer
, deberías ver opciones para seleccionar. Haciendo doble clic en elBrightcovePlayer
La opción agregará unimport
declaración. -
Localizar el
onCreate()
función. Antes de entrar en la superclase, asigne elbrightcoveVideoView
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 elbrightcoveVideoView
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 elBrightcoveExoPlayerVideoView
clase. -
-
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");
-
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álisissetAccount()
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");
-
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);
-
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(); }
-
Agregue el video a la vista e inicie la reproducción del video.
brightcoveVideoView.add(video); brightcoveVideoView.start();
-
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(); } }
-
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
- 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. -
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
- Desde su cuenta de Video Cloud Studio, recopile la siguiente información:
- ID de la cuenta
- ID de vídeo
- Clave de política
-
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>
-
Volver a la
MainActivity.java
y obtenga el emisor de eventos del SDK.// Get the event emitter from the SDK EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
-
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();
-
Utilice el catálogo
findVideoByID()
método con su ID de video y unVideoListener
para la devolución de llamada.En el
onVideo()
método, agregue el video abrightcoveVideoView
, 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(); } });
-
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(); } }); } }
- 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
-
Ya no se necesita algo de código de la aplicación anterior. Eliminar la llamada al catálogo
findVideoByID()
método, y el asociadoVideoListener
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
-
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();
- 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.
-
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>
-
Utilice el catálogo
findPlaylistByID()
método usando su ID de lista de reproducción y unPlaylistListener
para la devolución de llamada.En el
onPlaylist()
método, recupere los videos de la lista de reproducción, agregue todos los videos abrightcoveVideoView
, 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(); } });
-
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(); } }); } }
- 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 .