How to add AdMob ads to android app

I can build and run C++ SDL2 program and run it on my android phone. I have no experience with Java or Android development. I believe there must be some way to call some Java class(no idea how they work) from my c++ code. I followed this guide so the structure of the project is exactly the same. I tried looking online but there is no tutorial on sdl2+android+admob. Can somebody point me in the right direction? Due to my lack of knowledge on the android/java side, I’m stuck and don’t know where to start.

You may check public part of my apps here:

https://bitbucket.org/akk0rd87/akk0rdsdk/src/master/framework/ads/
https://bitbucket.org/akk0rd87/akk0rdsdk/src/master/framework/core/platformwrapper/android/admob/

Currently I’m using two ads providers for android and iOS: admob and yandex for interstitial blocks with different ECPM parameters configured on admob and yandex web interface.

I set minimum interval before interstitial ads show (for example 3-4 minutes) and adsManager try load ads with changing blockid (from highest to lowest ECPM) depedning on time left before next ad show time occurs.

Your app can use something like this. I specify time delay (seconds) for each blockid to change before next show time.

nsAds::Ads::Ads() : adsMgr(new ads::Manager()) {
    adsMgr->SetIntersitialShowDelay(3 * 60);  // 3 minutes before each ad show
    std::string InterstitialBlockID;

    if (auto adMob = ads::AdMob::createProvider(adsMgr, ads::Format::Interstitial)) {
        adMob->reserveInterstitialUnits(3);
        GetAdMobAdIdentifier(InterstitialBlockID, 0); adMob->addInterstitialUnit(InterstitialBlockID, 20);  // default ECPM blockid
        GetAdMobAdIdentifier(InterstitialBlockID, 1); adMob->addInterstitialUnit(InterstitialBlockID, 60);  // medium ECPM blockid
        GetAdMobAdIdentifier(InterstitialBlockID, 2); adMob->addInterstitialUnit(InterstitialBlockID, 120); // high ECPM blockid
        adsMgr->addProvider(adMob);
    }

    if (auto yandex = ads::Yandex::createProvider(adsMgr, ads::Format::Interstitial)) {
        yandex->reserveInterstitialUnits(3);
        GetYandexAdIdentifier(InterstitialBlockID, 0); yandex->addInterstitialUnit(InterstitialBlockID, 20);  // default ECPM blockid
        GetYandexAdIdentifier(InterstitialBlockID, 1); yandex->addInterstitialUnit(InterstitialBlockID, 60);  // medium ECPM blockid
        GetYandexAdIdentifier(InterstitialBlockID, 2); yandex->addInterstitialUnit(InterstitialBlockID, 120); // high ECPM blockid
        adsMgr->addProvider(yandex);
    }
}

and some from time to time you should call this fuctions to

virtual void CheckAdStatus() override { adsMgr->tryLoadInterstitial(); };
virtual void ShowAdInterstitial() override { adsMgr->showInterstitialIfAvailable(); }
auto getEventCode() const { return adsMgr->getEventCode(); } // for SDL event processing cycle

Thanks for your help, but I need to start more from the beginning, this is too advanced for me. Let’s say I want just to show an ordinary button available in android studio.
image
If I open JNI example project in Android studio I get this activity_main.xml
image
It comes with TextView I can edit in cpp file and return string to MainActivity.java

created sdl android project with androidbuild.sh command doesnt have this file.
Where do I start? the project has these Java files:
image

Where should I add Java function that will be called from cpp (or will get some data from return value in cpp)