Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
a107d2b
boilerplate and apis
wjoosen Jul 18, 2025
6ce4048
config
wjoosen Jul 18, 2025
2d16f39
provide context
wjoosen Jul 18, 2025
cbe8025
include PlayerData
wjoosen Jul 18, 2025
e014747
event listeners
wjoosen Jul 18, 2025
975baae
add listeners
wjoosen Jul 19, 2025
c5ca64d
handle sourcechange
wjoosen Jul 19, 2025
fb3f909
use const
wjoosen Jul 19, 2025
724cf5b
handle playing
wjoosen Jul 19, 2025
87ca2d1
pass program event data
wjoosen Jul 19, 2025
d7cb0a4
move logic to play handler
wjoosen Jul 19, 2025
fd34796
stick to playing event only
wjoosen Jul 19, 2025
73318b6
comment play logic
wjoosen Jul 19, 2025
33c34d3
handle pause
wjoosen Jul 19, 2025
e6411c3
handle waiting
wjoosen Jul 19, 2025
6748afe
move down
wjoosen Jul 19, 2025
7426d13
handle seeking
wjoosen Jul 19, 2025
fbbd052
handle ended and error
wjoosen Jul 19, 2025
f9f355c
handle volumechange
wjoosen Jul 19, 2025
892da47
handle video quality changes
wjoosen Jul 20, 2025
1a25896
handle ad break begin
wjoosen Jul 21, 2025
b76f31c
handle ad begin
wjoosen Jul 21, 2025
6ffca4a
rename
wjoosen Jul 21, 2025
1569162
handle ad end
wjoosen Jul 21, 2025
cb8a562
handle ad skip
wjoosen Jul 21, 2025
7fb1f2d
handle ad break end
wjoosen Jul 21, 2025
27b0246
dont report play if playing fired before preroll
wjoosen Jul 21, 2025
a125eb1
use member variable
wjoosen Jul 21, 2025
b02bba3
remove unused imports
wjoosen Jul 21, 2025
3c2d613
remove curly braces
wjoosen Jul 21, 2025
2571777
safe assert
wjoosen Jul 21, 2025
f38cd29
add log flags
wjoosen Jul 21, 2025
9c9f00d
integration points logs
wjoosen Jul 21, 2025
7ce5720
remove curly braces
wjoosen Jul 21, 2025
5768abe
remove unused import
wjoosen Jul 21, 2025
06ff3ff
test
wjoosen Jul 22, 2025
7608c17
add gemius connector dependency
wjoosen Jul 22, 2025
409bc2b
add missing dependencies
wjoosen Jul 22, 2025
03a696f
Pass gemiusSdkDir as gradle property
tvanlaerhoven Aug 4, 2025
f0876c0
Add destroy method
tvanlaerhoven Aug 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ dependencies {
implementation libs.androidx.compose.ui.tooling.preview
debugImplementation libs.androidx.compose.ui.tooling

implementation "ch.acra:acra-http:5.7.0"
implementation fileTree(dir: './libs/GemiusSDK_2.0.8.aar', include: ['*.aar', '*.jar'], exclude: [])

implementation "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion"
implementation "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion"
implementation libs.theoplayer.android.ui
Expand All @@ -69,6 +72,8 @@ dependencies {
implementation project(':connectors:analytics:comscore')
implementation libs.comscore

implementation project(":connectors:analytics:gemius")

implementation project(':connectors:yospace')
implementation libs.yospace

Expand Down
1 change: 1 addition & 0 deletions app/libs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.aar
25 changes: 25 additions & 0 deletions app/src/main/java/com/theoplayer/android/connector/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import com.gemius.sdk.stream.ProgramData
import com.theoplayer.android.api.THEOplayerConfig
import com.theoplayer.android.api.THEOplayerView
import com.theoplayer.android.api.ads.LinearAd
Expand All @@ -50,7 +51,9 @@ import com.theoplayer.android.connector.analytics.comscore.ComscoreMediaType
import com.theoplayer.android.connector.analytics.comscore.ComscoreMetaData
import com.theoplayer.android.connector.analytics.conviva.ConvivaConfiguration
import com.theoplayer.android.connector.analytics.conviva.ConvivaConnector
import com.theoplayer.android.connector.analytics.gemius.GemiusConfiguration
import com.theoplayer.android.connector.analytics.nielsen.NielsenConnector
import com.theoplayer.android.connector.analytics.gemius.GemiusConnector
import com.theoplayer.android.connector.uplynk.SkippedAdStrategy
import com.theoplayer.android.connector.uplynk.UplynkConfiguration
import com.theoplayer.android.connector.uplynk.UplynkConnector
Expand All @@ -74,6 +77,7 @@ class MainActivity : ComponentActivity() {
private lateinit var comscoreConnector: ComscoreConnector
private lateinit var yospaceConnector: YospaceConnector
private lateinit var uplynkConnector: UplynkConnector
private lateinit var gemiusConnector: GemiusConnector

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -85,6 +89,7 @@ class MainActivity : ComponentActivity() {
setupNielsen()
setupYospace()
setupUplynk()
setupGemius()
setupAdListeners()

setContent {
Expand Down Expand Up @@ -184,6 +189,26 @@ class MainActivity : ComponentActivity() {
)
}

private fun setupGemius() {
val gemiusId = "your_gemius_id"
val hitCollectorHost = "your_hit_collector_host"
val gemiusConfiguration = GemiusConfiguration(
"Demo",
"1.0",
hitCollectorHost,
gemiusId,
true,
null
)
gemiusConnector = GemiusConnector(this,gemiusConfiguration,theoplayerView)
val programData = ProgramData()
programData.name = "testasset1"
programData.programGenre = 1
programData.programSeason = "1"
programData.programProducer = "Someone"
gemiusConnector.update("test asset 1", programData)
}

private fun setupNielsen() {
val appId = "your_nielsen_app_id"
nielsenConnector = NielsenConnector(applicationContext, theoplayerView.player, appId, true)
Expand Down
1 change: 1 addition & 0 deletions connectors/analytics/gemius/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Empty file.
54 changes: 54 additions & 0 deletions connectors/analytics/gemius/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
}

android {
namespace 'com.theoplayer.android.connector.analytics.gemius'
compileSdk 35

defaultConfig {
minSdk 21

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
}

// The Gemius SDK location should be set by the app and passed in a gemiusSdkDir property.
def gemiusSdkDir = rootProject.properties['gemiusSdkDir']
if (!gemiusSdkDir) {
logger.warn("⚠️ WARNING: gemiusSdkDir not set.")
} else if (!rootProject.file(gemiusSdkDir).exists()) {
logger.warn("⚠️ WARNING: gemiusSdkDir does not exist at: ${gemiusSdkDir}")
} else {
dependencies {
compileOnly files("${rootProject.file(gemiusSdkDir)}/GemiusSDK_2.0.8.aar")
}
}

dependencies {

implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion"
compileOnly "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion"
testImplementation libs.junit
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
}
Empty file.
21 changes: 21 additions & 0 deletions connectors/analytics/gemius/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
4 changes: 4 additions & 0 deletions connectors/analytics/gemius/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

</manifest>
Loading