Spright
Active Member
I'm happy with this code that took a few weeks to write with this class. I've seen a few other similiar Ad classes on the forum.
There seem to be somthing wrong with my code as it says "full screen dismissed" after each reward is earned. This is supposed to only appear if you cancel the ad, right? I also get running "wating messages() that I'm not sure what it is.
I trigger the queue every x:th second to test but it's not supposed to be a problem. Its not queueing up? I'm totally lost in how to get the correct bevhaiour out of rewared fullscreen. Any kind soul that can guide me here?
There seem to be somthing wrong with my code as it says "full screen dismissed" after each reward is earned. This is supposed to only appear if you cancel the ad, right? I also get running "wating messages() that I'm not sure what it is.
I trigger the queue every x:th second to test but it's not supposed to be a problem. Its not queueing up? I'm totally lost in how to get the correct bevhaiour out of rewared fullscreen. Any kind soul that can guide me here?
B4X:
#MultiDex: True
#Region Project Attributes
#FullScreen: True
#IncludeTitle: False
#ApplicationLabel: Demo
#VersionCode: 1
#VersionName:
#SupportedOrientations: sensorLandscape
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#End Region
Sub Process_Globals
End Sub
Sub Globals
Type AdSize (Native As Object, Width As Int, Height As Int)
Dim GL As lgGL
Dim lGdx As LibGDX
Dim IP As lgInputProcessor
Dim Batch As lgSpriteBatch
Dim texsheet As lgTexture
Dim adwanted As Boolean = True
Dim Surface As View
Dim AdView1 As AdView
Dim tm As Timer
Dim Camera As lgOrthographicCamera
End Sub
Sub Activity_Create(FirstTime As Boolean)
If FirstTime = True Then
Dim Config As lgConfiguration
Config.useAccelerometer = False
Config.useCompass = False
Config.useWakelock = True
Config.hideStatusBar = True
Config.useImmersiveMode = True
Config.r = 8
Config.g = 8
Config.b = 8
Config.a = 8
Config.numSamples = 0
Config.maxSimultaneousSounds = 8
Surface = lGdx.InitializeView2(Config, "LG")
Activity.AddView(Surface, 0, 0, 100%x, 100%y)
tm.Initialize("timer",4000*4)
tm.Enabled = True
End If
' Create the panel view and add it to the activity
Dim panel As Panel
panel.Initialize("")
panel.Color = Colors.White
panel.SetLayout(0, 0, 100%x, 90dip)
Activity.AddView(panel, 0, 0, 100%x, 90dip)
' Initialize and load the adaptive ad inside the panel
Dim size As AdSize = GetAdaptiveAdSize
Dim adHeight As Int = size.Height
Dim adView As AdView
adView.Initialize2("ad", "ca-app-pub-3940256099942544/6300978111", size.Native)
panel.Color = Colors.Transparent
panel.AddView(adView, 0, 0, size.Width, adHeight)
adView.LoadAd
End Sub
Sub GetAdaptiveAdSize As AdSize
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim AdSize As JavaObject
Dim width As Int = 100%x / GetDeviceLayoutValues.Scale
' width = Min(width,2560) ' Ad should be in panel
Dim res As AdSize
res.Native = AdSize.InitializeStatic("com.google.android.gms.ads.AdSize").RunMethod("getCurrentOrientationAnchoredAdaptiveBannerAdSize", Array(ctxt, width))
Dim jo As JavaObject = res.Native
res.Width = jo.RunMethod("getWidthInPixels", Array(ctxt))
res.Height = jo.RunMethod("getHeightInPixels", Array(ctxt))
Return res
End Sub
Sub Activity_Resume
Starter.RewardAd.Callback = Me
If AdView1.IsInitialized Then AdView1.resume
If lGdx.IsInitialized Then lGdx.Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
If AdView1.IsInitialized Then AdView1.pause
If lGdx.IsInitialized Then lGdx.Pause
End Sub
Sub Activity_Destroy
End Sub
Sub LG_Create
Batch.Initialize
IP.Initialize("IP")
texsheet.Initialize("sprite.png")
Camera.Initialize
Camera.SetToOrtho(False)
End Sub
Sub LG_Render
GL.glClearColor(0, 0, 1, 1)
GL.glClear(GL.GL10_COLOR_BUFFER_BIT)
Camera.Update
Batch.ProjectionMatrix = Camera.Combined
Batch.Begin
Dim X, Y As Int
For i = 1 To 99
X = Rnd(0,999)
Y = Rnd(0,499)
Batch.DrawTex2(texsheet, X, Y, 100dip, 100dip)
Next
Batch.End
End Sub
Sub LG_Resume
End Sub
Sub LG_Pause
End Sub
Sub LG_Dispose
If texsheet.IsInitialized Then texsheet.dispose
If Batch.IsInitialized Then Batch.dispose
End Sub
Sub IP_TouchDown(ScreenX As Int, ScreenY As Int, Pointer As Int) As Boolean
Return True
End Sub
Sub ToastMsg_Show(Text As Object)
ToastMessageShow(Text, True)
End Sub
Sub RewardAd_Rewarded (Item As Object)
Log("GOT REWARD! NOW YOU HAVE COLLECTED THIS MANY COINS:")
End Sub
Sub RewardAd_AdClosed
Log("ad closed")
End Sub
Sub timer_Tick
If adwanted = True Then
If Starter.RewardAd.Ready Then
Starter.RewardAd.Show
adwanted = False
adwanted = True
Else
' No ad is available, handle the error
HandleAdLoadError
End If
End If
Log("TIMER!")
End Sub
Sub HandleAdLoadError
ToastMessageShow("Failed to load rewarded ad. Please check your internet connection.", True)
' Additional actions here e.g. disabling ad-related functionality or providing alternative content
End Sub