Research and integration of google ima ads sdk to play ads in PlayerActivity
This commit is contained in:
@@ -56,66 +56,66 @@ ext.jwPlayerVersion = '4.17.0'
|
||||
ext.exoplayerVersion = '1.3.1'
|
||||
|
||||
dependencies {
|
||||
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.32'
|
||||
implementation libs.libphonenumber
|
||||
|
||||
implementation "com.facebook.shimmer:shimmer:0.5.0"
|
||||
implementation libs.shimmer
|
||||
|
||||
implementation "com.airbnb.android:lottie:6.4.0"
|
||||
implementation "androidx.core:core-splashscreen:1.0.1"
|
||||
implementation libs.lottie
|
||||
implementation libs.androidx.core.splashscreen
|
||||
|
||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||
implementation libs.flexbox
|
||||
|
||||
implementation 'com.github.bumptech.glide:glide:4.16.0'
|
||||
implementation libs.glide
|
||||
|
||||
// dynamics text sizes
|
||||
implementation 'com.intuit.ssp:ssp-android:1.1.1'
|
||||
implementation libs.ssp.android
|
||||
// dynamic sizes
|
||||
implementation 'com.intuit.sdp:sdp-android:1.1.1'
|
||||
implementation libs.sdp.android
|
||||
|
||||
// retrofit
|
||||
def retrofit_version = "2.11.0"
|
||||
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
|
||||
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
|
||||
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
|
||||
implementation libs.retrofit
|
||||
implementation libs.converter.gson
|
||||
implementation(libs.logging.interceptor)
|
||||
|
||||
def lifecycle_version = "2.7.0"
|
||||
// ViewModel
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
|
||||
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
|
||||
implementation libs.androidx.lifecycle.viewmodel.ktx
|
||||
implementation(libs.androidx.lifecycle.livedata.ktx)
|
||||
|
||||
// circle image view
|
||||
implementation 'de.hdodenhof:circleimageview:3.1.0'
|
||||
implementation libs.circleimageview
|
||||
|
||||
// jwplayer
|
||||
implementation "com.jwplayer:jwplayer-core:$jwPlayerVersion"
|
||||
implementation "com.jwplayer:jwplayer-common:$jwPlayerVersion"
|
||||
implementation libs.jwplayer.core
|
||||
implementation libs.jwplayer.common
|
||||
implementation libs.jwplayer.ima
|
||||
implementation libs.interactivemedia
|
||||
implementation libs.play.services.ads.identifier
|
||||
|
||||
// media player 3
|
||||
def media3_version = "1.3.1"
|
||||
implementation "androidx.media3:media3-exoplayer:$media3_version"
|
||||
implementation libs.androidx.media3.exoplayer
|
||||
// For DASH playback support with ExoPlayer
|
||||
implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
|
||||
implementation libs.androidx.media3.exoplayer.dash
|
||||
// For HLS playback support with ExoPlayer
|
||||
implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
|
||||
implementation libs.androidx.media3.exoplayer.hls
|
||||
// For SmoothStreaming playback support with ExoPlayer
|
||||
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
|
||||
implementation libs.androidx.media3.exoplayer.smoothstreaming
|
||||
// Common functionality for reading and writing media containers
|
||||
implementation "androidx.media3:media3-container:$media3_version"
|
||||
implementation libs.androidx.media3.container
|
||||
// Common functionality for media database components
|
||||
implementation "androidx.media3:media3-database:$media3_version"
|
||||
implementation libs.androidx.media3.database
|
||||
// Common functionality for media decoders
|
||||
implementation "androidx.media3:media3-decoder:$media3_version"
|
||||
implementation libs.androidx.media3.decoder
|
||||
// Common functionality for loading data
|
||||
implementation "androidx.media3:media3-datasource:$media3_version"
|
||||
implementation libs.androidx.media3.datasource
|
||||
// Common functionality used across multiple media libraries
|
||||
implementation "androidx.media3:media3-common:$media3_version"
|
||||
implementation libs.androidx.media3.common
|
||||
// For extracting data from media containers
|
||||
implementation "androidx.media3:media3-extractor:$media3_version"
|
||||
implementation libs.androidx.media3.extractor
|
||||
// For building media playback UIs
|
||||
implementation "androidx.media3:media3-ui:$media3_version"
|
||||
implementation libs.androidx.media3.ui
|
||||
|
||||
// audio mixer for karaoke
|
||||
implementation("com.github.ZeroOneZeroR:android_audio_mixer:v1.1")
|
||||
implementation(libs.android.audio.mixer)
|
||||
|
||||
// one-signal
|
||||
implementation(libs.onesignal)
|
||||
|
||||
@@ -15,9 +15,11 @@ import com.jwplayer.pub.api.JWPlayer
|
||||
import com.jwplayer.pub.api.PauseReason
|
||||
import com.jwplayer.pub.api.PlayReason
|
||||
import com.jwplayer.pub.api.configuration.PlayerConfig
|
||||
import com.jwplayer.pub.api.configuration.ads.ima.ImaAdvertisingConfig
|
||||
import com.jwplayer.pub.api.events.EventType
|
||||
import com.jwplayer.pub.api.events.listeners.VideoPlayerEvents
|
||||
import com.jwplayer.pub.api.fullscreen.FullscreenHandler
|
||||
import com.jwplayer.pub.api.media.ads.AdBreak
|
||||
import com.woka.database.helpers.ClicksHelper
|
||||
import com.woka.database.models.ContentType
|
||||
import com.woka.databinding.ActivityPlayerBinding
|
||||
@@ -30,6 +32,7 @@ import com.woka.utils.WokaBaseActivity
|
||||
import com.woka.utils.hide
|
||||
import com.woka.utils.show
|
||||
|
||||
|
||||
private const val TAG = "PlayerActivity_TAG"
|
||||
|
||||
class PlayerActivity : WokaBaseActivity(), FullscreenHandler {
|
||||
@@ -166,8 +169,22 @@ class PlayerActivity : WokaBaseActivity(), FullscreenHandler {
|
||||
private fun setUpPlayer(){
|
||||
player = binding.playerView.getPlayer(this)
|
||||
|
||||
val adSchedule = mutableListOf<AdBreak>()
|
||||
|
||||
val adBreak = AdBreak.Builder()
|
||||
.tag("https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=")
|
||||
.offset("25%")
|
||||
.build()
|
||||
|
||||
adSchedule.add(adBreak)
|
||||
|
||||
val imaAdvertising = ImaAdvertisingConfig.Builder()
|
||||
.schedule(adSchedule)
|
||||
.build()
|
||||
|
||||
config = PlayerConfig.Builder()
|
||||
.playlist(videoPlayList?.playlist)
|
||||
.advertisingConfig(imaAdvertising)
|
||||
.build()
|
||||
|
||||
// to keep up the screen om when video is being played
|
||||
|
||||
@@ -1,19 +1,33 @@
|
||||
[versions]
|
||||
agp = "8.3.0"
|
||||
android_audio_mixer = "v1.1"
|
||||
circleimageview = "3.1.0"
|
||||
coreSplashscreen = "1.0.1"
|
||||
glide = "4.16.0"
|
||||
flexbox = "3.0.0"
|
||||
interactivemedia = "3.35.0"
|
||||
jwPlayerVersion = "4.17.0"
|
||||
kotlin = "2.0.0"
|
||||
coreKtx = "1.12.0"
|
||||
junit = "4.13.2"
|
||||
junitVersion = "1.1.5"
|
||||
espressoCore = "3.5.1"
|
||||
appcompat = "1.6.1"
|
||||
libphonenumber = "8.12.32"
|
||||
lifecycleViewmodelKtx = "2.7.0"
|
||||
loggingInterceptor = "4.12.0"
|
||||
lottie = "6.4.0"
|
||||
material = "1.11.0"
|
||||
activity = "1.8.0"
|
||||
constraintlayout = "2.1.4"
|
||||
media3Exoplayer = "1.3.1"
|
||||
navigationFragmentKtx = "2.7.7"
|
||||
navigationUiKtx = "2.7.7"
|
||||
navigationSafeArgs = "2.7.7"
|
||||
onesignal = "5.1.20"
|
||||
playServicesAds = "23.3.0"
|
||||
playServicesAdsIdentifier = "18.1.0"
|
||||
retrofit = "2.11.0"
|
||||
roomKtx = "2.6.1"
|
||||
roomRuntime = "2.6.1"
|
||||
ksp = "2.0.0-1.0.24"
|
||||
@@ -22,14 +36,43 @@ firebaseAnalytics = "22.0.2"
|
||||
firebasePerf = "21.0.1"
|
||||
gradle = "8.3.0"
|
||||
perfPlugin = "1.4.2"
|
||||
sdpAndroid = "1.1.1"
|
||||
shimmer = "0.5.0"
|
||||
sspAndroid = "1.1.1"
|
||||
|
||||
[libraries]
|
||||
android_audio_mixer = { module = "com.github.ZeroOneZeroR:android_audio_mixer", version.ref = "android_audio_mixer" }
|
||||
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
||||
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" }
|
||||
androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycleViewmodelKtx" }
|
||||
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
|
||||
androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-container = { module = "androidx.media3:media3-container", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-decoder = { module = "androidx.media3:media3-decoder", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-database = { module = "androidx.media3:media3-database", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-datasource = { module = "androidx.media3:media3-datasource", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-exoplayer-dash = { module = "androidx.media3:media3-exoplayer-dash", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-exoplayer-smoothstreaming = { module = "androidx.media3:media3-exoplayer-smoothstreaming", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-extractor = { module = "androidx.media3:media3-extractor", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3Exoplayer" }
|
||||
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomRuntime" }
|
||||
circleimageview = { module = "de.hdodenhof:circleimageview", version.ref = "circleimageview" }
|
||||
converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
|
||||
glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
|
||||
flexbox = { module = "com.google.android.flexbox:flexbox", version.ref = "flexbox" }
|
||||
interactivemedia = { module = "com.google.ads.interactivemedia.v3:interactivemedia", version.ref = "interactivemedia" }
|
||||
junit = { group = "junit", name = "junit", version.ref = "junit" }
|
||||
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
|
||||
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
||||
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
||||
jwplayer-common = { module = "com.jwplayer:jwplayer-common", version.ref = "jwPlayerVersion" }
|
||||
jwplayer-core = { module = "com.jwplayer:jwplayer-core", version.ref = "jwPlayerVersion" }
|
||||
jwplayer-ima = { module = "com.jwplayer:jwplayer-ima", version.ref = "jwPlayerVersion" }
|
||||
libphonenumber = { module = "com.googlecode.libphonenumber:libphonenumber", version.ref = "libphonenumber" }
|
||||
logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" }
|
||||
lottie = { module = "com.airbnb.android:lottie", version.ref = "lottie" }
|
||||
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
||||
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
|
||||
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
|
||||
@@ -37,12 +80,17 @@ androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navi
|
||||
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
|
||||
onesignal = { module = "com.onesignal:OneSignal", version.ref = "onesignal" }
|
||||
play-services-ads = { module = "com.google.android.gms:play-services-ads", version.ref = "playServicesAds" }
|
||||
play-services-ads-identifier = { module = "com.google.android.gms:play-services-ads-identifier", version.ref = "playServicesAdsIdentifier" }
|
||||
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
|
||||
room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomKtx" }
|
||||
google-services = { group = "com.google.gms", name = "google-services", version.ref = "googleServices" }
|
||||
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics", version.ref = "firebaseAnalytics" }
|
||||
firebase-perf = { group = "com.google.firebase", name = "firebase-perf", version.ref = "firebasePerf" }
|
||||
gradle = { group = "com.android.tools.build", name = "gradle", version.ref = "gradle" }
|
||||
perf-plugin = { group = "com.google.firebase", name = "perf-plugin", version.ref = "perfPlugin" }
|
||||
sdp-android = { module = "com.intuit.sdp:sdp-android", version.ref = "sdpAndroid" }
|
||||
shimmer = { module = "com.facebook.shimmer:shimmer", version.ref = "shimmer" }
|
||||
ssp-android = { module = "com.intuit.ssp:ssp-android", version.ref = "sspAndroid" }
|
||||
|
||||
[plugins]
|
||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||
|
||||
Reference in New Issue
Block a user