From 6cd899cb438355fc8f724f34816f57d26f3d4c6a Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Mon, 16 Sep 2024 21:00:28 +0530 Subject: [PATCH] Google ads integration for all modules: 1. Webseries 2. karaoke 3. audio books 4. GamesActivity 5. GamePlayerActivity 6. KaraokePlayerActivity 5. FMActivity Home2Fragment ad size update --- .../audiobooks/views/AudioBooksActivity.kt | 88 +++++++++++++++-- .../main/java/com/woka/googleads/AdUnitIds.kt | 17 +++- .../com/woka/home/fragments/Home1Fragment.kt | 7 +- .../com/woka/home/fragments/Home2Fragment.kt | 18 ++-- .../java/com/woka/home/views/FMActivity.kt | 22 +++++ .../java/com/woka/home/views/HomeActivity.kt | 4 +- .../karaoke/player/KaraokePlayerActivity.kt | 24 ++++- .../com/woka/karaoke/views/KaraokeActivity.kt | 88 +++++++++++++++-- .../views/fragments/WebSeriesFragment.kt | 43 ++++++++- .../wokagames/playerr/GamePlayerActivity.kt | 22 +++++ .../com/woka/wokagames/views/GamesActivity.kt | 95 +++++++++++++++++-- .../main/res/layout/activity_audio_books.xml | 25 +++++ .../main/res/layout/activity_fmactivity.xml | 12 ++- .../main/res/layout/activity_game_player.xml | 13 ++- app/src/main/res/layout/activity_games.xml | 25 +++++ app/src/main/res/layout/activity_karaoke.xml | 25 +++++ .../res/layout/activity_karaoke_playerr.xml | 58 ++++++----- app/src/main/res/layout/fragment_home2.xml | 13 ++- .../main/res/layout/fragment_web_series.xml | 18 ++++ 19 files changed, 544 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt index de8953f..2abb14c 100644 --- a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt +++ b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt @@ -17,6 +17,10 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.SimpleItemAnimator +import com.google.android.gms.ads.AdListener +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.google.android.material.appbar.CollapsingToolbarLayout import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.woka.R @@ -34,6 +38,8 @@ import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityAudioBooksBinding import com.woka.databinding.DialogModuleShowerBinding +import com.woka.googleads.AUDIO_BOOKS_BANNER_AD +import com.woka.googleads.AUDIO_BOOKS_TRAILER_AD import com.woka.networking.ApiResult import com.woka.players.models.VideoPlayList import com.woka.players.models.VideoViewData @@ -68,7 +74,7 @@ class AudioBooksActivity : WokaBaseActivity() { private lateinit var playerLauncher: ActivityResultLauncher - private var adLoaded = false + private var customAdLoaded = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -99,6 +105,8 @@ class AudioBooksActivity : WokaBaseActivity() { noSignInDialog = NoSignInDialog(this) + customAdLoaded = false + initLaunchers() initViews() @@ -107,10 +115,10 @@ class AudioBooksActivity : WokaBaseActivity() { clickEvents() - setObservers() - loadAds() + setObservers() + if (!viewModel.audioBookLiveData.isInitialized) { viewModel.loadAudioSongs() } @@ -202,7 +210,7 @@ class AudioBooksActivity : WokaBaseActivity() { AdClicksHelper.addImpression(adDetails.id) - adLoaded = true + customAdLoaded = true binding.trailerBtn.hide() binding.trailerName.hide() @@ -298,6 +306,10 @@ class AudioBooksActivity : WokaBaseActivity() { newList.size ) } + + if (!customAdLoaded){ + loadGoogleAds() + } } } } @@ -330,9 +342,11 @@ class AudioBooksActivity : WokaBaseActivity() { } private fun loadTrailerData(audioBookData: AudioBookData) { - if (adLoaded) return - binding.apply { + if (customAdLoaded) { + return + } + trailerView.show() adjustTrailerImage() @@ -604,4 +618,66 @@ class AudioBooksActivity : WokaBaseActivity() { } } } + + private fun loadGoogleAds(){ + if (customAdLoaded) return + + // banner ad + val adView = AdView(this) + + adView.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + adjustTrailerImage() + } + } + + adView.setAdSize( + AdSize.LARGE_BANNER + ) + adView.adUnitId = AUDIO_BOOKS_BANNER_AD + binding.toolbarAdsContainer.addView(adView) + adView.loadAd(AdRequest.Builder().build()) + + // full ad at masila image + binding.trailerImage.post { + val adView2 = AdView(this) + + adView2.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + binding.adsContainer.setBackgroundResource(R.color.black) + + adjustTrailerImage() + + customAdLoaded = true + } + } + + adView2.setAdSize( + AdSize( + binding.trailerImage.width / resources.displayMetrics.density.toInt(), + binding.trailerImage.height / resources.displayMetrics.density.toInt(), + ) + ) + adView2.adUnitId = AUDIO_BOOKS_TRAILER_AD + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView2) + + adView2.loadAd( + AdRequest.Builder() + .build() + ) + + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/googleads/AdUnitIds.kt b/app/src/main/java/com/woka/googleads/AdUnitIds.kt index 42e31f1..c8a2ec1 100644 --- a/app/src/main/java/com/woka/googleads/AdUnitIds.kt +++ b/app/src/main/java/com/woka/googleads/AdUnitIds.kt @@ -1,3 +1,18 @@ package com.woka.googleads -const val TEST_INTERSTITIAL_AD = "ca-app-pub-5699008063638916/6300144761" \ No newline at end of file +// WEB SERIES +const val WEB_SERIES_TRAILER_AD = "ca-app-pub-5699008063638916/6110095586" +const val WEB_SERIES_BANNER_AD = "ca-app-pub-5699008063638916/6110095586" + +// KARAOKE +const val KARAOKE_TRAILER_AD = "ca-app-pub-5699008063638916/6110095586" +const val KARAOKE_BANNER_AD = "ca-app-pub-5699008063638916/6110095586" + +// AUDIO BOOKS +const val AUDIO_BOOKS_TRAILER_AD = "ca-app-pub-5699008063638916/6110095586" +const val AUDIO_BOOKS_BANNER_AD = "ca-app-pub-5699008063638916/6110095586" + +// GAME +const val GAME_TRAILER_AD = "ca-app-pub-5699008063638916/6110095586" +const val GAME_BANNER_AD = "ca-app-pub-5699008063638916/6110095586" +const val GAME_INTERSTITIAL_AD = "ca-app-pub-5699008063638916/6300144761" \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt index e9740b4..5547fc6 100644 --- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt @@ -11,13 +11,11 @@ import android.content.IntentFilter import android.net.Uri import android.os.Bundle import android.util.DisplayMetrics -import android.util.Log import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.ViewGroup.MarginLayoutParams -import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment @@ -45,7 +43,6 @@ import com.woka.streamingurls.StreamingUrlRepository import com.woka.userPreference.UserType import com.woka.userdata.userDataModels.UserDataResponse import com.woka.utils.ProgressView -import com.woka.utils.TAG import com.woka.utils.changeLocale import com.woka.utils.hide import com.woka.utils.scaleAnimate @@ -117,13 +114,11 @@ class Home1Fragment : Fragment() { // Calculate aspect ratio val aspectRatio = screenHeight.toFloat() / screenWidth.toFloat() - Log.d(TAG, "setUpDynamicViewSizes: $aspectRatio") - when { aspectRatio > 2.1 -> { // screen is taller } - aspectRatio > 2 -> { + aspectRatio > 1.85 -> { // screen is normal size } else -> { diff --git a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt index 16931ae..0f4c311 100644 --- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt @@ -10,6 +10,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.LinearLayout +import androidx.core.view.updateMargins import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide @@ -27,6 +28,7 @@ import com.woka.audiobooks.views.AudioBooksActivity import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.FragmentHome2Binding +import com.woka.googleads.GAME_BANNER_AD import com.woka.home.viewmodels.HomeViewModel import com.woka.home.views.FMActivity import com.woka.karaoke.views.KaraokeActivity @@ -84,14 +86,16 @@ class Home2Fragment : Fragment() { } private fun loadGoogleAds() { - binding.adView.adListener = object : AdListener() { - override fun onAdFailedToLoad(p0: LoadAdError) { - super.onAdFailedToLoad(p0) - Log.d("aditya_ad_testing", "onAdFailedToLoad: $p0") - } - } - binding.adView.loadAd( + val adView = AdView(requireContext()) + + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, AdSize.AUTO_HEIGHT)) + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) + + adView.loadAd( AdRequest.Builder() .build() ) diff --git a/app/src/main/java/com/woka/home/views/FMActivity.kt b/app/src/main/java/com/woka/home/views/FMActivity.kt index dbaf28e..885360b 100644 --- a/app/src/main/java/com/woka/home/views/FMActivity.kt +++ b/app/src/main/java/com/woka/home/views/FMActivity.kt @@ -11,10 +11,14 @@ import androidx.media3.common.MediaItem import androidx.media3.common.PlaybackException import androidx.media3.common.Player import androidx.media3.exoplayer.ExoPlayer +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.woka.R import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityFmactivityBinding +import com.woka.googleads.GAME_BANNER_AD import com.woka.userdata.UserRepository import com.woka.userdata.userDataModels.VideoViewRequestData import com.woka.utils.TAG @@ -72,6 +76,8 @@ class FMActivity : WokaBaseActivity() { setObservers() + loadGoogleAds() + playbackStartTime = System.currentTimeMillis() } @@ -198,6 +204,22 @@ class FMActivity : WokaBaseActivity() { }) } + private fun loadGoogleAds() { + + val adView = AdView(this) + + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) + + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + private fun updateVolumeButtons(){ val volume = (Math.round(player.volume * 10) / 10.0).toFloat() Log.d(TAG, "updateVolumeButtons: $volume") diff --git a/app/src/main/java/com/woka/home/views/HomeActivity.kt b/app/src/main/java/com/woka/home/views/HomeActivity.kt index 5b69835..a50e85d 100644 --- a/app/src/main/java/com/woka/home/views/HomeActivity.kt +++ b/app/src/main/java/com/woka/home/views/HomeActivity.kt @@ -188,8 +188,8 @@ class HomeActivity : WokaBaseActivity(), (getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager).unregisterNetworkCallback(networkCallback) CoroutineScope(Dispatchers.IO).launch { - RemoteSync.syncClickEvents() - RemoteSync.syncAdClickEvents() +// RemoteSync.syncClickEvents() +// RemoteSync.syncAdClickEvents() } } diff --git a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt index fd6fe43..96e249d 100644 --- a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt +++ b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt @@ -31,10 +31,14 @@ import androidx.media3.common.PlaybackException import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.ExoPlayer +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.woka.R import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityKaraokePlayerrBinding +import com.woka.googleads.GAME_BANNER_AD import com.woka.players.models.PlayBackState import com.woka.userdata.UserRepository import com.woka.userdata.userDataModels.VideoViewRequestData @@ -158,6 +162,8 @@ class KaraokePlayerActivity : WokaBaseActivity() { loadAudioFromUrl() + loadGoogleAds() + onBackPressedDispatcher.addCallback { if (playbackStartTime > 0) { val elapsed = System.currentTimeMillis() - playbackStartTime @@ -459,7 +465,7 @@ class KaraokePlayerActivity : WokaBaseActivity() { CoroutineScope(Dispatchers.IO).launch { try { - val url = URL(karaokePlayerData?.karaokeVideoUrl) + val url = URL("https://content.jwplatform.com/videos/699dmCGz-7bKGpMKj.mp4") copyStreamToFile(url.openConnection().getInputStream(), File(karaokeMusicPath)) runOnUiThread { binding.recorderView.show() @@ -477,6 +483,22 @@ class KaraokePlayerActivity : WokaBaseActivity() { } } + private fun loadGoogleAds() { + + val adView = AdView(this) + + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 100)) + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) + + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + private fun playStopPlayingAudio() { when (recordingState) { RecordingState.NOT_RECORDING -> { diff --git a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt index c2f98a2..9b549f2 100644 --- a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt +++ b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt @@ -18,6 +18,10 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.SimpleItemAnimator +import com.google.android.gms.ads.AdListener +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.google.android.material.appbar.CollapsingToolbarLayout import com.woka.R import com.woka.WokaApp.Companion.userPrefs @@ -28,6 +32,8 @@ import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityKaraokeBinding import com.woka.databinding.DialogModuleShowerBinding +import com.woka.googleads.KARAOKE_BANNER_AD +import com.woka.googleads.KARAOKE_TRAILER_AD import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.adapters.ContinueKaraokeAdapter import com.woka.karaoke.adapters.KaraokeAdapter @@ -68,7 +74,7 @@ class KaraokeActivity : WokaBaseActivity() { private lateinit var playerLauncher: ActivityResultLauncher - private var adLoaded = false + private var customAdLoaded = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -101,6 +107,8 @@ class KaraokeActivity : WokaBaseActivity() { noSignInDialog = NoSignInDialog(this) + customAdLoaded = false + initLaunchers() initViews() @@ -109,10 +117,10 @@ class KaraokeActivity : WokaBaseActivity() { clickEvents() - setObservers() - loadAds() + setObservers() + if (!viewModel.karaokeLiveData.isInitialized) { viewModel.loadKaraokeSongs() } @@ -202,9 +210,11 @@ class KaraokeActivity : WokaBaseActivity() { } private fun loadTrailerData(karaokeData: KaraokeData) { - if (adLoaded) return - binding.apply { + if (customAdLoaded) { + return + } + trailerView.show() adjustTrailerImage() @@ -522,6 +532,10 @@ class KaraokeActivity : WokaBaseActivity() { newList.size ) } + + if (!customAdLoaded){ + loadGoogleAds() + } } } } @@ -565,7 +579,7 @@ class KaraokeActivity : WokaBaseActivity() { AdClicksHelper.addImpression(adDetails.id) - adLoaded = true + customAdLoaded = true binding.trailerBtn.hide() binding.trailerName.hide() @@ -599,4 +613,66 @@ class KaraokeActivity : WokaBaseActivity() { } } } + + private fun loadGoogleAds(){ + if (customAdLoaded) return + + // banner ad + val adView = AdView(this) + + adView.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + adjustTrailerImage() + } + } + + adView.setAdSize( + AdSize.LARGE_BANNER + ) + adView.adUnitId = KARAOKE_BANNER_AD + binding.toolbarAdsContainer.addView(adView) + adView.loadAd(AdRequest.Builder().build()) + + // full ad at masila image + binding.trailerImage.post { + val adView2 = AdView(this) + + adView2.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + binding.adsContainer.setBackgroundResource(R.color.black) + + adjustTrailerImage() + + customAdLoaded = true + } + } + + adView2.setAdSize( + AdSize( + binding.trailerImage.width / resources.displayMetrics.density.toInt(), + binding.trailerImage.height / resources.displayMetrics.density.toInt(), + ) + ) + adView2.adUnitId = KARAOKE_TRAILER_AD + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView2) + + adView2.loadAd( + AdRequest.Builder() + .build() + ) + + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt index ad97682..dd89db5 100644 --- a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt +++ b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt @@ -37,6 +37,8 @@ import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.DialogContinueEpisodeBinding import com.woka.databinding.FragmentWebSeriesBinding +import com.woka.googleads.WEB_SERIES_BANNER_AD +import com.woka.googleads.WEB_SERIES_TRAILER_AD import com.woka.networking.ApiResult import com.woka.players.models.VideoPlayList import com.woka.players.models.VideoViewData @@ -49,7 +51,6 @@ import com.woka.utils.hide import com.woka.utils.lightStatusBar import com.woka.utils.setVisibility import com.woka.utils.show -import com.woka.utils.toast import com.woka.webseries.adapters.ContinueEpisodeAdapter import com.woka.webseries.adapters.SpinnerAdapter import com.woka.webseries.adapters.WebSeriesShowAdapter @@ -76,6 +77,8 @@ class WebSeriesFragment : Fragment() { private lateinit var playerLauncher: ActivityResultLauncher + private var isAdLoaded = false + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -92,6 +95,9 @@ class WebSeriesFragment : Fragment() { it.window.statusBarColor = 0 it.window.lightStatusBar(false) } + + isAdLoaded = false + loadingMore = false return binding.root } @@ -115,7 +121,7 @@ class WebSeriesFragment : Fragment() { setObservers() - loadAds() + loadCustomAds() if (!viewModel.showCategoryLiveData.isInitialized) { viewModel.loadCategories() @@ -395,7 +401,7 @@ class WebSeriesFragment : Fragment() { } } - private fun loadAds(){ + private fun loadCustomAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> val theme1ads = ads.filter { it.for_page == ForPage.WEB_SERIES.value} @@ -405,6 +411,8 @@ class WebSeriesFragment : Fragment() { AdClicksHelper.addImpression(adDetails.id) + isAdLoaded = true + binding.trailerBtn.hide() binding.trailerTxt.hide() @@ -438,6 +446,30 @@ class WebSeriesFragment : Fragment() { } private fun loadGoogleAds(){ + if (isAdLoaded) return + + // banner ad + val adView = AdView(requireContext()) + + adView.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerTxt.hide() + binding.adBtn.hide() + + adjustMasilaImage() + } + } + + adView.setAdSize( + AdSize.LARGE_BANNER + ) + adView.adUnitId = WEB_SERIES_BANNER_AD + binding.toolbarAdsContainer.addView(adView) + adView.loadAd(AdRequest.Builder().build()) + + // full ad at masila image binding.masilaImage.post { val adView2 = AdView(requireContext()) @@ -446,6 +478,9 @@ class WebSeriesFragment : Fragment() { super.onAdLoaded() binding.trailerBtn.hide() binding.trailerTxt.hide() + binding.adBtn.hide() + + binding.adsContainer.setBackgroundResource(R.color.black) adjustMasilaImage() } @@ -457,7 +492,7 @@ class WebSeriesFragment : Fragment() { binding.masilaImage.height / resources.displayMetrics.density.toInt(), ) ) - adView2.adUnitId = "ca-app-pub-5699008063638916/6110095586" + adView2.adUnitId = WEB_SERIES_TRAILER_AD binding.adsContainer.removeAllViews() binding.adsContainer.addView(adView2) diff --git a/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt b/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt index ab5d3a0..9a83405 100644 --- a/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt +++ b/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt @@ -10,10 +10,14 @@ import android.webkit.WebSettings import android.webkit.WebViewClient import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.woka.R import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityGamePlayerBinding +import com.woka.googleads.GAME_BANNER_AD import com.woka.userdata.UserRepository import com.woka.userdata.userDataModels.VideoViewRequestData import com.woka.utils.DecisionDialog @@ -61,6 +65,8 @@ class GamePlayerActivity : WokaBaseActivity() { initWebView(it.gameUrl) } + loadGoogleAds() + binding.webView.setOnTouchListener { _, event -> if (event.action == MotionEvent.ACTION_DOWN){ clicksCount++ @@ -165,4 +171,20 @@ class GamePlayerActivity : WokaBaseActivity() { } decisionDialog.show() } + + private fun loadGoogleAds() { + + val adView = AdView(this) + + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) + + adView.loadAd( + AdRequest.Builder() + .build() + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt index 2c9def7..f065cff 100644 --- a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt +++ b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt @@ -16,6 +16,10 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.SimpleItemAnimator +import com.google.android.gms.ads.AdListener +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView import com.google.android.material.appbar.CollapsingToolbarLayout import com.woka.R import com.woka.WokaApp.Companion.userPrefs @@ -26,8 +30,10 @@ import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityGamesBinding import com.woka.databinding.DialogModuleShowerBinding +import com.woka.googleads.GAME_BANNER_AD import com.woka.googleads.InterstitialAds -import com.woka.googleads.TEST_INTERSTITIAL_AD +import com.woka.googleads.GAME_INTERSTITIAL_AD +import com.woka.googleads.GAME_TRAILER_AD import com.woka.networking.ApiResult import com.woka.userPreference.UserType import com.woka.utils.NoSignInDialog @@ -63,7 +69,7 @@ class GamesActivity : WokaBaseActivity() { private lateinit var noSignInDialog: NoSignInDialog - private var adLoaded = false + private var customAdLoaded = false private lateinit var interstitialAds: InterstitialAds @@ -94,7 +100,9 @@ class GamesActivity : WokaBaseActivity() { noSignInDialog.show() } - interstitialAds = InterstitialAds(this, TEST_INTERSTITIAL_AD) + interstitialAds = InterstitialAds(this, GAME_INTERSTITIAL_AD) + + customAdLoaded = false initViews() @@ -102,10 +110,10 @@ class GamesActivity : WokaBaseActivity() { clickEvents() - setObservers() - loadAds() + setObservers() + if (!viewModel.gamesLiveData.isInitialized){ viewModel.loadGames() } @@ -186,9 +194,11 @@ class GamesActivity : WokaBaseActivity() { } private fun loadTrailerData(gameData: GameData) { - if (adLoaded) return - binding.apply { + if (customAdLoaded) { + return + } + trailerView.show() adjustTrailerImage() @@ -448,6 +458,10 @@ class GamesActivity : WokaBaseActivity() { newList.size ) } + + if (!customAdLoaded){ + loadGoogleAds() + } } } } @@ -465,7 +479,7 @@ class GamesActivity : WokaBaseActivity() { AdClicksHelper.addImpression(adDetails.id) - adLoaded = true + customAdLoaded = true binding.trailerBtn.hide() binding.trailerName.hide() @@ -499,4 +513,69 @@ class GamesActivity : WokaBaseActivity() { } } } + + private fun loadGoogleAds(){ + if (customAdLoaded) return + + // banner ad + val adView = AdView(this) + + adView.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + adjustTrailerImage() + } + } + + adView.setAdSize( + AdSize.LARGE_BANNER + ) + adView.adUnitId = GAME_BANNER_AD + + binding.toolbarAdsContainer.removeAllViews() + binding.toolbarAdsContainer.addView(adView) + + adView.loadAd(AdRequest.Builder().build()) + + // full ad at masila image + binding.trailerImage.post { + val adView2 = AdView(this) + + adView2.adListener = object : AdListener(){ + override fun onAdLoaded() { + super.onAdLoaded() + binding.trailerBtn.hide() + binding.trailerName.hide() + binding.adBtn.hide() + + binding.adsContainer.setBackgroundResource(R.color.black) + + adjustTrailerImage() + + customAdLoaded = true + } + } + + adView2.setAdSize( + AdSize( + binding.trailerImage.width / resources.displayMetrics.density.toInt(), + binding.trailerImage.height / resources.displayMetrics.density.toInt(), + ) + ) + adView2.adUnitId = GAME_TRAILER_AD + + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView2) + + adView2.loadAd( + AdRequest.Builder() + .build() + ) + + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_audio_books.xml b/app/src/main/res/layout/activity_audio_books.xml index c931869..5f0c07d 100644 --- a/app/src/main/res/layout/activity_audio_books.xml +++ b/app/src/main/res/layout/activity_audio_books.xml @@ -153,6 +153,14 @@ android:layout_gravity="top" /> + + + + + + + + diff --git a/app/src/main/res/layout/activity_fmactivity.xml b/app/src/main/res/layout/activity_fmactivity.xml index bbe3a3a..d0780d1 100644 --- a/app/src/main/res/layout/activity_fmactivity.xml +++ b/app/src/main/res/layout/activity_fmactivity.xml @@ -27,7 +27,6 @@ app:layout_constraintBottom_toBottomOf="parent" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="15dp" android:orientation="vertical" android:background="@drawable/img_fm_bg"> @@ -43,6 +42,8 @@ android:src="@drawable/img_fm_masila" android:contentDescription="@string/image" android:scaleType="fitXY" + + android:layout_marginTop="15dp" /> + + diff --git a/app/src/main/res/layout/activity_game_player.xml b/app/src/main/res/layout/activity_game_player.xml index 00541e7..fb8c533 100644 --- a/app/src/main/res/layout/activity_game_player.xml +++ b/app/src/main/res/layout/activity_game_player.xml @@ -11,7 +11,18 @@ + android:layout_height="match_parent" + android:layout_above="@id/ads_container" + /> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_karaoke.xml b/app/src/main/res/layout/activity_karaoke.xml index 15c3769..2386003 100644 --- a/app/src/main/res/layout/activity_karaoke.xml +++ b/app/src/main/res/layout/activity_karaoke.xml @@ -143,6 +143,14 @@ android:src="@drawable/img_masila_full" app:layout_collapseMode="parallax" /> + + + + + + + + diff --git a/app/src/main/res/layout/activity_karaoke_playerr.xml b/app/src/main/res/layout/activity_karaoke_playerr.xml index 9dc61d9..c4d56c2 100644 --- a/app/src/main/res/layout/activity_karaoke_playerr.xml +++ b/app/src/main/res/layout/activity_karaoke_playerr.xml @@ -14,6 +14,18 @@ android:layout_height="match_parent" > + + + app:layout_constraintStart_toStartOf="parent" + + app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/fragment_home2.xml b/app/src/main/res/layout/fragment_home2.xml index 492abc1..00cb645 100644 --- a/app/src/main/res/layout/fragment_home2.xml +++ b/app/src/main/res/layout/fragment_home2.xml @@ -531,15 +531,14 @@ - + /> + + + + + +