Puede implementar sus propios detectores de oportunidades implementando la interfaz PlacementOpportunityDetector.
Crear un personalizado AdvertisingFactory
instancia y anulación createOpportunityDetector
. Por ejemplo:
new AdvertisingFactory() {
...
@Override
public PlacementOpportunityDetector createOpportunityDetector(MediaPlayerItem item) {
return new CustomPlacementOpportunityDetector();
}
...
}
Registre la fábrica del cliente de publicidad en MediaPlayer
. Por ejemplo:
// register the custom advertising factory with media player
advertisingFactory = createCustomAdvertisingFactory();
mediaPlayer.registerAdClientFactory(advertisingFactory);
Cree una clase de detector de oportunidades personalizada que amplíe el PlacementOpportunityDetector
clase.
En el detector de oportunidades personalizado, anule esta función:
public List<PlacementOpportunity> process(List<TimedMetadata> timedMetadataList, Metadata metadata)
El timedMetadataList
contiene la lista de TimedMetadata
, que se ordena. Los metadatos contienen los parámetros de objetivo y los parámetros personalizados que se envían al proveedor de publicidad.
Para cada TimedMetadata
, cree un List<PlacementOpportunity>
. La lista puede estar vacía, pero no ser nula. PlacementOpportunity
debe tener los atributos siguientes:
PlacementOpportunity(
String id, // can be id from timedMetadata
PlacementInformation placementInformation // PlacementInformation object containing Type, time, duration
Metadata metadata // ad metadata containing targeting params sent to the ad provider
)
Una vez creadas las oportunidades de ubicación para todos los objetos de metadatos cronometrados detectados, simplemente devuelva el PlacementOpportunity
lista.
Este es un ejemplo de detector de oportunidades de ubicación personalizado:
public class CustomPlacementOpportunityDetector implements PlacementOpportunityDetector {
...
@Override
public List<PlacementOpportunity> process(List<TimedMetadata> timedMetadataList, Metadata metadata) {
...
List<PlacementOpportunity> opportunities = new ArrayList<PlacementOpportunity>();
for (TimedMetadata timedMetadata : timedMetadataList) {
if (isOpportunity(timedMetadata)) { // check if given timedMetadata should be
// considered as an opportunity
// create an object of PlacementOpportunity and add it to the opportunities list
PlacementOpportunity opportunity =
createPlacementOpportunity(timedMetadata, airingId, metadata);
Opportunities.add(opportunity);
}
}
return opportunities;
}
...
}