Skip to content

Instantly share code, notes, and snippets.

@we4tech
Created May 2, 2012 09:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save we4tech/2575481 to your computer and use it in GitHub Desktop.
Save we4tech/2575481 to your computer and use it in GitHub Desktop.
Spring analytics integration
package com.easystream
{
import flash.display.DisplayObject;
import flash.events.NetDataEvent;
import flash.events.VideoEvent;
import flash.external.ExternalInterface;
import flash.net.NetStream;
import mx.controls.Alert;
import mx.core.mx_internal;
import mx.utils.StringUtil;
import org.osmf.events.LoadEvent;
import org.osmf.events.LoaderEvent;
import org.osmf.events.MediaPlayerStateChangeEvent;
import org.osmf.events.TimeEvent;
import org.osmf.media.MediaPlayerState;
import org.osmf.net.rtmpstreaming.RTMPDynamicStreamingNetLoader;
import org.osmf.traits.DynamicStreamTrait;
import org.osmf.traits.LoadTrait;
import org.osmf.traits.MediaTraitType;
import spark.components.VideoPlayer;
public class SpringAnalytics extends AbstractUsageAnalytics
{
private var mMediaPlayer:VideoPlayer;
private var mLastTime:Number = 0;
public function SpringAnalytics(root:DisplayObject) { }
override public function configure(c:Array):void
{
trace('Spring site name - ' + c[0]);
}
override public function track(e:UsageAnalyticsEvent):void
{
trace('Tracking - ' + e.toString());
_setValueAndTrack(e);
}
override public function trackStream(o:UsageAnalyticsEvent):void
{
}
override public function isStreamTrackingSupported():Boolean
{
return true;
}
override public function setDebug(b:Boolean):void
{
}
override public function isVideoPlayerTrackingSupported():Boolean
{
return true;
}
override public function trackVideoPlayer(caption:String, pMediaPlayer:VideoPlayer):void {
mCaption = caption;
if (mMediaPlayer == null || mMediaPlayer != pMediaPlayer) {
mMediaPlayer = pMediaPlayer;
pMediaPlayer.addEventListener(
MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, _handleMediaStateChange);
pMediaPlayer.addEventListener(
TimeEvent.CURRENT_TIME_CHANGE,
_handleCurrentTimeChange);
}
}
private function _handleCurrentTimeChange(e:TimeEvent):void {
if (mLastTime != mMediaPlayer.currentTime && (mMediaPlayer.currentTime - mLastTime) > 20) {
var evt:UsageAnalyticsEvent = new UsageAnalyticsEvent(
'videos', 'Playing time', mCaption, mMediaPlayer.currentTime);
evt.screenHeight = mMediaPlayer.height;
evt.screenWidth = mMediaPlayer.width;
track(evt);
mLastTime = mMediaPlayer.currentTime;
}
}
private function _handleMediaStateChange(e:MediaPlayerStateChangeEvent):void {
var evt:UsageAnalyticsEvent = new UsageAnalyticsEvent('videos', e.state, mCaption, mMediaPlayer.currentTime);
evt.screenHeight = mMediaPlayer.height;
evt.screenWidth = mMediaPlayer.width;
track(evt);
}
private function _setValueAndTrack(e:UsageAnalyticsEvent):void {
if (ExternalInterface.available) {
ExternalInterface.call("SpringAnalyticsJS.set", 'screenX', e.screenWidth);
ExternalInterface.call("SpringAnalyticsJS.set", 'screenY', e.screenHeight);
ExternalInterface.call("SpringAnalyticsJS.set", 'position', e.value);
ExternalInterface.call("SpringAnalyticsJS.set", 'streamName', e.objectName + "_" + e.caption);
ExternalInterface.call("SpringAnalyticsJS.track");
} else {
Alert.show("JS Not enabled Spring score won't work");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment