Mostrar anuncios de vídeo en secuencia en Android
En esta página se describe cómo usar el SDK para capturar y mostrar anuncios de vídeo en secuencia.
Nota:
Mantener referencias a objetos VideoAd: es su responsabilidad mantener una referencia al VideoAd
objeto. El SDK no la almacena en caché.
Paso 1. Inclusión del SDK en el proyecto
Si usa Maven, use la siguiente configuración de Gradle para instalar la versión del SDK con compatibilidad con vídeo en secuencia:
// Android: Gradle config to install the SDK and the Video SDK
repositories {
mavenCentral()
}
dependencies {
compile 'com.appnexus.opensdk:appnexus-instreamvideo:[8,9)'
}
Paso 2: Almacenar en caché el anuncio de vídeo
Para almacenar en caché un anuncio de vídeo, configure un objeto de solicitud y proporcione lo siguiente:
- Un identificador de ubicación (como se muestra en el ejemplo siguiente), o
- Combinación del identificador de miembro de Xandr y un código de inventario
A continuación, registre un VideoAdLoadListener
objeto que indicará si la carga del anuncio se realizó correctamente o no. Esto es opcional, pero se recomienda encarecidamente. Si no establece el VideoAdLoadListener,
valor, puede usar el VideoAd.isReady()
método para comprobar si el anuncio está disponible.
Después de eso, llame VideoAd.loadAd()
a para empezar a almacenar en caché el anuncio.
// Create a VideoAd instance
VideoAd videoAd = new VideoAd( this , "9924002" );
// Set the (optional) VideoAdLoadListener.
videoAd.setAdLoadListener( new VideoAdLoadListener() {
@Override
public void onAdLoaded(VideoAd videoAd) {
Log.d(TAG, "onAdLoaded" );
}
@Override
public void onAdRequestFailed(VideoAd videoAd, ResultCode errorCode) {
Log.d(TAG, "onAdRequestFailed" );
}
});
// At this point you can set targeting parameters, the ad landing
// page, and many other options before calling `loadAd()`. For
// details, see the SDK documentation.
// Load the VideoAd.
videoAd.loadAd();
Paso 3: Configurar el agente de escucha de reproducción de vídeo
Antes de mostrar el anuncio de vídeo, deberá configurar el obligatorio VideoPlaybackListener
. La onAdCompleted()
notificación es necesaria para mostrar el vídeo de contenido una vez que el anuncio termina de reproducirse.
// Set the (mandatory) PlayBack Listener.
videoAd.setVideoPlaybackListener( new VideoAdPlaybackListener() {
@Override
public void onAdPlaying( final VideoAd videoAd) {
Log.d(TAG, "onAdPlaying::" );
}
@Override
public void onQuartile(VideoAd view, Quartile quartile) {
Log.d(TAG, "onQuartile::" + quartile);
}
//Resume your VideoPlayer with the 'onAddCompleted' notification.
@Override
public void onAdCompleted(VideoAd view, PlaybackCompletionState playbackState) {
Log.d(TAG, "onAdCompleted::playbackState" + playbackState);
videoPlayer.start();
//The 'videoPlayer' here is your Application Content Video Player.
}
@Override
public void onAdMuted(VideoAd view, boolean isMute) {
Log.d(TAG, "isAudioMute::" + isMute);
}
@Override
public void onAdClicked(VideoAd adView) {
Log.d(TAG, "onAdClicked" );
}
@Override
public void onAdClicked(VideoAd videoAd, String clickUrl) {
Log.d(TAG, "onAdClicked" );
}
});
Paso 4: Pasar eventos de ciclo de vida de actividad al anuncio
Pase los eventos de devolución de llamada del ciclo de vida de la actividad a VideoAd como se muestra a continuación:
// This is important because it's used to resume the ad after an interruption by user activity.
@Override
public void onResume() {
super .onResume();
videoAd.activityOnResume();
}
@Override
public void onPause() {
super .onPause();
videoAd.activityOnPause();
}
// Used to clear the memory footprint of the VideoAd instance.
@Override
public void onDestroy() {
super .onDestroy();
videoAd.activityOnDestroy();
}
Paso 5: Mostrar el anuncio de vídeo
Ahora está listo para mostrar el anuncio de vídeo llamando a playAd()
como se muestra a continuación. No olvide pausar el reproductor de vídeo de contenido antes de llamar a VideoAd.playAd()
:
if (videoAd.isReady()) {
// Pause your app's video player.
videoPlayer.pause();
// Play the Ad by passing the container. The container here is a
// FrameLayout/RelativeLayout, on top of which the ad will be
// displayed.
videoAd.playAd(baseContainer);
}
Pausar y reanudar el anuncio de vídeo
Para pausar o reanudar la reproducción del anuncio de vídeo, use las siguientes llamadas de método.
public void resumeAd();
public void pauseAd();
Captura de los atributos de una creatividad de vídeo cargada
Una vez cargado el vídeo, puede recuperar varios atributos creativos:
public String getVastURL() //Provide the VAST content URL
public int getVideoAdDuration() //Provide the duration of the video
public String getVastXML() //Provide the VAST content as an XML string
public String getCreativeURL() //Provide the actual creative loaded
public VideoOrientation getVideoOrientation() //Provide the Orientation of the Video rendered. Possible video orientations can be square, portrait, landscape or none
Determinación del progreso de la reproducción de anuncios
Puedes determinar hasta dónde ha progresado adPlay recuperando la cantidad de tiempo transcurrido desde que el anuncio comenzó a reproducirse:
public void getAdPlayElapsedTime(ResultCallback<String> resultCallback)
Ejemplo
Vea a continuación un ejemplo de trabajo completo en el que se muestra un anuncio de vídeo en secuencia.
Nota:
- Se debe llamar a todos los métodos del SDK en el subproceso principal.
activityOnDestroy()
debe llamarse para el VideoAd que se espera que se destruya.
package com.appnexus.example.simplevideo;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.RelativeLayout;
import android.widget.VideoView;
import com.appnexus.opensdk.ResultCode;
import com.appnexus.opensdk.instreamvideo.Quartile;
import com.appnexus.opensdk.instreamvideo.VideoAd;
import com.appnexus.opensdk.instreamvideo.VideoAdLoadListener;
import com.appnexus.opensdk.instreamvideo.VideoAdPlaybackListener;
public class MainActivity extends Activity {
public static final String TAG = MainActivity.class.getName();
// The Ad Video instance.
// Its important to create this as a Instance variable to make sure its not removed Garbage Collected.
private VideoAd videoAd;
// Content video player.
private static VideoView videoPlayer;
// Ad Container.
private RelativeLayout baseContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoPlayer = (VideoView)findViewById(R.id.video_player);
baseContainer = (RelativeLayout)findViewById(R.id.baseContainer);
videoPlayer.setVideoURI(Uri.parse("https://acdn.adnxs.com/mobile/video_test/content/Xandr_HighRes.mp4"));
// Initialize VideoAd
videoAd =new VideoAd(this,"9924002");
// Set the Ad-Load Listener
videoAd.setAdLoadListener(new VideoAdLoadListener() {
@Override
public void onAdLoaded(VideoAd videoAd) {
// Pause App's Content Video Player
videoPlayer.pause();
// Play the VideoAd by passing the container.
videoAd.playAd(baseContainer);
}
@Override
public void onAdRequestFailed(VideoAd videoAd, ResultCode errorCode) {
Log.d(TAG, "onAdRequestFailed::"+errorCode);
videoPlayer.start();
}
});
// videoAd.setAge("25");
// videoAd.setGender(AdView.GENDER.FEMALE);
// videoAd.setLoadsInBackground(true);
// videoAd.addCustomKeywords("KEY_1","VALUE_1");
// videoAd.addCustomKeywords("KEY_2","VALUE_2");
//Load the Ad.
videoAd.loadAd();
// Set PlayBack Listener.
videoAd.setVideoPlaybackListener(new VideoAdPlaybackListener() {
@Override
public void onAdPlaying(VideoAd view){
Log.d(TAG, "onAdPlaying");
}
@Override
public void onQuartile(VideoAd view, Quartile quartile) {
Log.d(TAG, "onQuartile::" + quartile);
videoAd.getAdPlayElapsedTime(new ResultCallback<String>() {
@Override
public void onResult(String s) {
Log.d(TAG, "elapsed time::" + s);
}
});
}
@Override
public void onAdCompleted(VideoAd view, PlaybackCompletionState playbackState) {
Log.d(TAG, "onAdCompleted::playbackState" + playbackState);
videoPlayer.start();
}
@Override
public void onAdMuted(VideoAd view, boolean isMute){
Log.d(TAG, "isAudioMute::"+isMute);
}
@Override
public void onAdClicked(VideoAd adView) {
Log.d(TAG, "onAdClicked");
}
@Override
public void onAdClicked(VideoAd videoAd, String clickUrl) {
Log.d(TAG, "onAdClicked");
}
});
}
// Pass the Activity LifeCycle Callback's to VideoAd. This is very important for autoresuming the Video Ad after interruption.
@Override
public void onResume() {
super.onResume();
videoAd.activityOnResume();
}
@Override
public void onPause() {
super.onPause();
videoAd.activityOnPause();
}
@Override
public void onDestroy() {
super.onDestroy();
videoAd.activityOnDestroy();
}
}