use of com.brightcove.player.event.Event 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(EventType.DID_SET_VIDEO, new EventListener() {
@Override
public void processEvent(Event event) {
brightcoveVideoView.start();
}
});
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);
AdRequestConfiguration adRequestConfiguration = (AdRequestConfiguration) event.properties.get(FreeWheelController.AD_REQUEST_CONFIGURATION_KEY);
IConstants adConstants = adContext.getConstants();
// 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");
int midrollCount = 1;
int segmentLength = (video.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.Event in project android-player-samples by BrightcoveOS.
the class MainActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
brightcoveVideoView = (BrightcoveVideoView) findViewById(R.id.brightcove_video_view);
super.onCreate(savedInstanceState);
brightcoveVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer));
BrightcoveCaptionFormat brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "de");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_de), brightcoveCaptionFormat);
brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "en");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_en), brightcoveCaptionFormat);
brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "es");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_es), brightcoveCaptionFormat);
brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "fr");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_fr), brightcoveCaptionFormat);
brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "it");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_it), brightcoveCaptionFormat);
brightcoveCaptionFormat = BrightcoveCaptionFormat.createCaptionFormat("text/vtt", "nl");
brightcoveVideoView.addSubtitleSource(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sintel_trailer_nl), brightcoveCaptionFormat);
brightcoveVideoView.getEventEmitter().once(EventType.CAPTIONS_LANGUAGES, new EventListener() {
@Override
public void processEvent(Event event) {
brightcoveVideoView.setClosedCaptioningEnabled(true);
brightcoveVideoView.setSubtitleLocale("en");
}
});
}
use of com.brightcove.player.event.Event in project android-player-samples by BrightcoveOS.
the class MainActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
brightcoveVideoView.getEventEmitter().on(EventType.DID_SET_SOURCE, new EventListener() {
@Override
public void processEvent(Event event) {
ExoPlayerVideoDisplayComponent exoPlayerVideoDisplayComponent = (ExoPlayerVideoDisplayComponent) brightcoveVideoView.getVideoDisplay();
exoPlayerVideoDisplayComponent.setMetadataListener(new ExoPlayerVideoDisplayComponent.MetadataListener() {
@Override
public void onMetadata(Metadata metadata) {
for (int i = 0; i < metadata.length(); i++) {
Metadata.Entry entry = metadata.get(i);
if (entry instanceof Id3Frame) {
Id3Frame id3Frame = (Id3Frame) entry;
Log.v(TAG, "id3 Frame id: " + id3Frame.id);
}
}
}
});
}
});
Video video = Video.createVideo("https://s3.amazonaws.com/as-zencoder/hls-timed-metadata/test.m3u8", DeliveryType.HLS);
video.getProperties().put(Video.Fields.PUBLISHER_ID, "5420904993001");
brightcoveVideoView.add(video);
brightcoveVideoView.start();
// Log whether or not instance state in non-null.
if (savedInstanceState != null) {
Log.v(TAG, "Restoring saved position");
} else {
Log.v(TAG, "No saved state");
}
}
use of com.brightcove.player.event.Event 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 = 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", IConstants.IdType.CUSTOM, // FW uses their duration as seconds; Android is in milliseconds
video.getDuration() / 1000, IConstants.VideoAssetDurationType.EXACT, IConstants.VideoAssetAutoPlayType.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");
int midrollCount = 1;
int segmentLength = (video.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.Event in project android-player-samples by BrightcoveOS.
the class MainActivity method setupFreeWheel.
private void setupFreeWheel() {
//change this to new FrameLayout based constructor.
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();
// This overrides what the plugin does by default for setVideoAsset() which is to pass in currentVideo.getId().
// video ID
adContext.setVideoAsset(// video ID
"3pqa_video", // FW uses their duration as seconds; Android is in milliseconds
video.getDuration() / 1000, // location
null, // auto play type
adConstants.VIDEO_ASSET_AUTO_PLAY_TYPE_ATTENDED(), // a random number
(int) Math.floor(Math.random() * Integer.MAX_VALUE), // setting networkId for 0 as it's the default value for this method
0, // type of video ID passed (customer created or FW issued)
adConstants.ID_TYPE_CUSTOM(), // fallback ID
0, // duration type
adConstants.VIDEO_ASSET_DURATION_TYPE_EXACT());
adContext.addSiteSectionNonTemporalSlot("300x250slot", null, 300, 250, null, true, null, null);
// Add preroll
Log.v(TAG, "Adding temporal slot for prerolls");
adContext.addTemporalSlot("larry", "PREROLL", 0, null, 0, 0, null, null, 0);
// Add midroll
Log.v(TAG, "Adding temporal slot for midrolls");
int midrollCount = 1;
int segmentLength = (video.getDuration() / 1000) / (midrollCount + 1);
for (int i = 0; i < midrollCount; i++) {
adContext.addTemporalSlot("moe" + i, "MIDROLL", segmentLength * (i + 1), null, 0, 0, null, null, 0);
}
// Add postroll
Log.v(TAG, "Adding temporal slot for postrolls");
adContext.addTemporalSlot("curly", "POSTROLL", video.getDuration() / 1000, null, 0, 0, null, null, 0);
// Add overlay
Log.v(TAG, "Adding temporal slot for overlays");
adContext.addTemporalSlot("shemp", "OVERLAY", 8, null, 0, 0, null, null, 0);
}
});
freeWheelController.enable();
}
Aggregations