Author Topic: Android: Adding Admob & Basic Game Controller Support  (Read 1659 times)

Offline MrPlow

  • Prof. Inline
  • *****
  • Posts: 1662
    • View Profile
Hi All,
For GLB users that are interested in Android Studio development and want controller and in-app Ads.

ANDROID ADMOB with Android Studio

Requires the *New* versions of and AStudio files. The new update from SF (Im also might edit this post) works perfectly for instant placement of Interstitial Ads in your Apps. This update is still not pushed to steam.

First at all you need a newer version of Android Studio glbasic build, that is now on steam as a beta:

Step 1

AndroidManifest.xml - add meta info

            android:value="ca-app-pub-3940256099942544~3347511713" />
<!-- replace testid with own id -->

            android:theme="@android:style/Theme.Translucent" />


Step 2

Open string.xml in the res > values folder
Add the following:

<string name="MobileAds_setAdUnitId">ca-app-pub-3940256099942544/1033173712</string>

Note: When live you can replace testid with your own app advert id provided by Admob console

Step 3
open build.gradle file within the "app" folder in Android Studio
add the bolded item to dependancies, so its look like this (its near the bottom of it and the old one can been replaced):

Code: (glbasic) [Select]
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation ''

in the soon steam update, then the lines has allready been added for new projects, but admob just commented out.

Step 4

Open Android Studio, right click on and then let it Open in Explorer from the file you have downloaded from the top of the post.

Those 3 files should been placed and eventuelt replace the Java files in that folder.

Open in AStudio

 ** New version of is being pushed to Steam soon, so you can skip this step over **

Step 5

In GLBASIC when invoking the ads there is no need to re-load ads - the admob listener takes care of that.

Code: (glbasic) [Select]
IMPORT "C" const char* android_JAVACALL(const char* string)

FUNCTION JavaCall$: callStr$
res$ = android_JAVACALL(callStr$)

The above function let you call Java function from Glbasic.

// Run after a command press or touchscreen to start a gameloop / next level / or jump back to main menu
// This call the ads its self and also load a new one.
// Also if a ads has been failed, no ads will been shown, but will try again next time you using it.


// This returns the current status of ads, if something is happens, fails or succes.

Good luck!

Thanks to SF for sticking it out and getting it sorted in the end!


SPACE FRACTAL: This works DOES work now, and im ends with to use tilt, keys and touch events to pickup the JavaCalls from a Activity.


Space Fractal: This section is heavy edited as its now much better implemeted and now can use all the JOY() commands for all officiel Google supported JoyPads. Those is controllers that works its self on the system navigation as well ouya. Im have tested successful with PS4 and Microsoft One wired controllers on a Android 9 based Android TV. Im do of course cannot guarantee any joypads works of course.

Now you can use GETJOYNAME$(ID) to get a kind of joystick, if there is any of them. GETJOYNAME$(0) is allways to been used by like a TV Remote as well for TILT. GETJOYNAME$(1) when connected is used by the first connected gamepad controller. Howover with wired controllers on a Android TV might have ID as Player 3, not as Player 1. Be aware of that!

Currectly back, menu and start buttons is NOT supported, howover they do returns a KEY() value throught.

when using Gamecontrollers with KEY():

You can also uses KEY() command for checking values as well. You can respons to controller by KEY() values using the image seens here. Also if you do a remapping/rebind feature, then you could support even more controllers. But this is for single player only as its will been checked by all game controllers by once!

The values a game controller would return, would have those values seens on the image. Sticks can also return a float to the KEY() commands as well. Been beware of that. Howover this is disabled by default, and can been enabled by editing the strings.xml.

You can also uses Tile (using the accelerator sensor), which is routed to the GETJOYX(0) and GETJOYY(0) commands, while Orientation is routed to GETJOYRX(0) and GETJOYRY(0). The later one is the orientation (360 degree) converted to axis.
« Last Edit: 2020-Mar-30 by spacefractal »
Speccy-48k, Speccy-128k, Amigas, PCs

Offline spacefractal

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 3830
    • View Profile
    • Space Fractal
Im have choosen to clean up this thread as there was too much offypic (that include me, so its generally). This thread is now only about Controller and Admob support. This post might can been edited both by me and MR Plow.

This is due im have been heavy code to get the JOY commands works much better than its was before.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation and The beagle Jam.

Offline SnooPI

  • Dr. Type
  • ****
  • Posts: 314
    • View Profile
Yeah ! It's cool guys!

I think it will help a lot of people  :) ...including me when I get back to Android.