use of com.brightcove.player.event.EventListener in project android-player-samples by BrightcoveOS.
the class MainActivity method setupAdMarkers.
/*
This methods show how to the the Google IMA AdsManager, get the cue points and add the markers
to the Brightcove Seek Bar.
*/
private void setupAdMarkers(BaseVideoView videoView) {
final BrightcoveMediaController mediaController = new BrightcoveMediaController(brightcoveVideoView);
// Add "Ad Markers" where the Ads Manager says ads will appear.
mediaController.addListener(GoogleIMAEventType.ADS_MANAGER_LOADED, new EventListener() {
@Override
public void processEvent(Event event) {
AdsManager manager = (AdsManager) event.properties.get("adsManager");
List<Float> cuepoints = manager.getAdCuePoints();
for (int i = 0; i < cuepoints.size(); i++) {
Float cuepoint = cuepoints.get(i);
BrightcoveSeekBar brightcoveSeekBar = mediaController.getBrightcoveSeekBar();
// If cuepoint is negative it means it is a POST ROLL.
int markerTime = cuepoint < 0 ? brightcoveSeekBar.getMax() : (int) (cuepoint * DateUtils.SECOND_IN_MILLIS);
mediaController.getBrightcoveSeekBar().addMarker(markerTime);
}
}
});
videoView.setMediaController(mediaController);
}
use of com.brightcove.player.event.EventListener in project android-player-samples by BrightcoveOS.
the class MainActivity method registerEventHandlers.
// Private instance methods
/**
* Procedural abstraction used to setup event handlers for the OnceUX plugin.
*/
private void registerEventHandlers() {
// Handle the case where the ad data URL has not been supplied to the plugin.
EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
eventEmitter.on(OnceUxEventType.NO_AD_DATA_URL, new EventListener() {
@Override
public void processEvent(Event event) {
// Log the event and display a warning message (later)
Log.e(TAG, event.getType());
// TODO: throw up a stock Android warning widget.
}
});
}
use of com.brightcove.player.event.EventListener in project android-player-samples by BrightcoveOS.
the class MainActivity method setupFreeWheel.
private void setupFreeWheel() {
// change this to new FrameLayout based constructor.
FreeWheelController freeWheelController = new FreeWheelController(this, brightcoveVideoView, eventEmitter);
// configure your own IAdManager or supply connection information
freeWheelController.setAdURL("http://demo.v.fwmrm.net/");
freeWheelController.setAdNetworkId(90750);
freeWheelController.setProfile("3pqa_android");
/*
* Choose one of these to determine the ad policy (basically server or client).
* - 3pqa_section - uses FW server rules - always returns a preroll and a postroll. It should return whatever midroll slots you request though.
* - 3pqa_section_nocbp - returns the slots that you request.
*/
// freeWheelController.setSiteSectionId("3pqa_section");
freeWheelController.setSiteSectionId("3pqa_section_nocbp");
eventEmitter.on(FreeWheelEventType.SHOW_DISPLAY_ADS, new EventListener() {
@Override
public void processEvent(Event event) {
@SuppressWarnings("unchecked") List<ISlot> slots = (List<ISlot>) event.properties.get(FreeWheelController.AD_SLOTS_KEY);
ViewGroup adView = (ViewGroup) findViewById(R.id.ad_frame);
// Clean out any previous display ads
for (int i = 0; i < adView.getChildCount(); i++) {
adView.removeViewAt(i);
}
for (ISlot slot : slots) {
adView.addView(slot.getBase());
slot.play();
}
}
});
eventEmitter.on(FreeWheelEventType.WILL_SUBMIT_AD_REQUEST, new EventListener() {
@Override
public void processEvent(Event event) {
Video video = (Video) event.properties.get(Event.VIDEO);
IAdContext adContext = (IAdContext) event.properties.get(FreeWheelController.AD_CONTEXT_KEY);
IConstants adConstants = adContext.getConstants();
AdRequestConfiguration adRequestConfiguration = (AdRequestConfiguration) event.properties.get(FreeWheelController.AD_REQUEST_CONFIGURATION_KEY);
// This overrides what the plugin does by default for setVideoAsset() which is to pass in currentVideo.getId().
VideoAssetConfiguration fwVideoAssetConfiguration = new VideoAssetConfiguration("3pqa_video", adConstants.ID_TYPE_CUSTOM(), // FW uses their duration as seconds; Android is in milliseconds
video.getDuration() / 1000, adConstants.VIDEO_ASSET_DURATION_TYPE_EXACT(), adConstants.VIDEO_ASSET_AUTO_PLAY_TYPE_ATTENDED());
adRequestConfiguration.setVideoAssetConfiguration(fwVideoAssetConfiguration);
NonTemporalSlotConfiguration companionSlot = new NonTemporalSlotConfiguration("300x250slot", null, 300, 250);
companionSlot.setCompanionAcceptance(true);
adRequestConfiguration.addSlotConfiguration(companionSlot);
// Add preroll
Log.v(TAG, "Adding temporal slot for prerolls");
TemporalSlotConfiguration prerollSlot = new TemporalSlotConfiguration("larry", adConstants.ADUNIT_PREROLL(), 0);
adRequestConfiguration.addSlotConfiguration(prerollSlot);
// Add midroll
Log.v(TAG, "Adding temporal slot for midrolls: duration = " + brightcoveVideoView.getDuration());
int midrollCount = 4;
int segmentLength = (brightcoveVideoView.getDuration() / 1000) / (midrollCount + 1);
TemporalSlotConfiguration midrollSlot;
for (int i = 0; i < midrollCount; i++) {
midrollSlot = new TemporalSlotConfiguration("moe" + i, adConstants.ADUNIT_MIDROLL(), segmentLength * (i + 1));
adRequestConfiguration.addSlotConfiguration(midrollSlot);
}
// Add postroll
Log.v(TAG, "Adding temporal slot for postrolls");
TemporalSlotConfiguration postrollSlot = new TemporalSlotConfiguration("curly", adConstants.ADUNIT_POSTROLL(), video.getDuration() / 1000);
adRequestConfiguration.addSlotConfiguration(postrollSlot);
// Add overlay
Log.v(TAG, "Adding temporal slot for overlays");
TemporalSlotConfiguration overlaySlot = new TemporalSlotConfiguration("shemp", adConstants.ADUNIT_OVERLAY(), 8);
adRequestConfiguration.addSlotConfiguration(overlaySlot);
}
});
freeWheelController.enable();
}
use of com.brightcove.player.event.EventListener in project android-player-samples by BrightcoveOS.
the class MainActivity method setupGoogleIMA.
/**
* Setup the Brightcove IMA Plugin.
*/
private void setupGoogleIMA() {
// Establish the Google IMA SDK factory instance.
final ImaSdkFactory sdkFactory = ImaSdkFactory.getInstance();
// Enable logging up ad start.
eventEmitter.on(EventType.AD_STARTED, new EventListener() {
@Override
public void processEvent(Event event) {
Log.v(TAG, event.getType());
}
});
// Enable logging any failed attempts to play an ad.
eventEmitter.on(GoogleIMAEventType.DID_FAIL_TO_PLAY_AD, new EventListener() {
@Override
public void processEvent(Event event) {
Log.v(TAG, event.getType());
}
});
// Enable Logging upon ad completion.
eventEmitter.on(EventType.AD_COMPLETED, new EventListener() {
@Override
public void processEvent(Event event) {
Log.v(TAG, event.getType());
}
});
// Set up a listener for initializing AdsRequests. The Google
// IMA plugin emits an ad request event as a result of
// initializeAdsRequests() being called.
eventEmitter.on(GoogleIMAEventType.ADS_REQUEST_FOR_VIDEO, new EventListener() {
@Override
public void processEvent(Event event) {
// Create a container object for the ads to be presented.
AdDisplayContainer container = sdkFactory.createAdDisplayContainer();
container.setPlayer(googleIMAComponent.getVideoAdPlayer());
container.setAdContainer(brightcoveVideoView);
// Build an ads request object and point it to the ad
// display container created above.
AdsRequest adsRequest = sdkFactory.createAdsRequest();
adsRequest.setAdTagUrl(adRulesURL);
adsRequest.setAdDisplayContainer(container);
ArrayList<AdsRequest> adsRequests = new ArrayList<AdsRequest>(1);
adsRequests.add(adsRequest);
// Respond to the event with the new ad requests.
event.properties.put(GoogleIMAComponent.ADS_REQUESTS, adsRequests);
eventEmitter.respond(event);
}
});
// Create the Brightcove IMA Plugin and pass in the event
// emitter so that the plugin can integrate with the SDK.
googleIMAComponent = new GoogleIMAComponent(brightcoveVideoView, eventEmitter, true);
// Calling GoogleIMAComponent.initializeAdsRequests() is no longer necessary.
}
Aggregations