diff --git a/QtAndroidTools/QAndroidAdMobBanner.h b/QtAndroidTools/QAndroidAdMobBanner.h index e88a008..71f1e9f 100644 --- a/QtAndroidTools/QAndroidAdMobBanner.h +++ b/QtAndroidTools/QAndroidAdMobBanner.h @@ -49,7 +49,8 @@ public: TYPE_LARGE_BANNER, TYPE_MEDIUM_RECTANGLE, TYPE_SMART_BANNER, - TYPE_WIDE_SKYSCRAPER + TYPE_WIDE_SKYSCRAPER, + TYPE_ADAPTIVE_BANNER }; enum ERROR_TYPE { diff --git a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java index 2add9d7..f28d65c 100644 --- a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java +++ b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java @@ -24,14 +24,33 @@ package com.falsinsoft.qtandroidtools; -import com.google.ads.mediation.admob.AdMobAdapter; +import android.app.Activity; +import android.content.Context; +import com.google.android.gms.ads.MobileAds; import com.google.android.gms.ads.AdRequest; +import com.google.android.gms.ads.initialization.InitializationStatus; +import com.google.android.gms.ads.initialization.OnInitializationCompleteListener; +import com.google.ads.mediation.admob.AdMobAdapter; import android.os.Bundle; public class AndroidAdMob { + private static boolean mMobileAdsInitialized = false; private boolean mNonPersonalizedAds = false; + public AndroidAdMob(Activity activityInstance) + { + if(mMobileAdsInitialized == false) + { + MobileAds.initialize(activityInstance, new MobileAdsInitializationListener()); + } + } + + protected boolean isMobileAdsInitialized() + { + return mMobileAdsInitialized; + } + public void setNonPersonalizedAds(boolean npa) { mNonPersonalizedAds = npa; @@ -46,4 +65,13 @@ public class AndroidAdMob builder.addNetworkExtrasBundle(AdMobAdapter.class, extras); } } + + private class MobileAdsInitializationListener implements OnInitializationCompleteListener + { + @Override + public void onInitializationComplete(InitializationStatus initializationStatus) + { + mMobileAdsInitialized = true; + } + } } diff --git a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobBanner.java b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobBanner.java index e3edbb2..d44e938 100644 --- a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobBanner.java +++ b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobBanner.java @@ -38,6 +38,8 @@ import android.util.Log; import android.graphics.Rect; import android.widget.FrameLayout; import android.graphics.Color; +import android.view.Display; +import android.util.DisplayMetrics; public class AndroidAdMobBanner extends AndroidAdMob { @@ -52,6 +54,7 @@ public class AndroidAdMobBanner extends AndroidAdMob public AndroidAdMobBanner(Activity activityInstance) { + super(activityInstance); mViewGroup = (ViewGroup)activityInstance.getWindow().getDecorView().findViewById(android.R.id.content); mBannerListener = new BannerListener(); mActivityInstance = activityInstance; @@ -100,6 +103,9 @@ public class AndroidAdMobBanner extends AndroidAdMob case TYPE_WIDE_SKYSCRAPER: bannerSize = AdSize.WIDE_SKYSCRAPER; break; + case TYPE_ADAPTIVE_BANNER: + bannerSize = getAdaptiveBannerAdSize(); + break; } mBannerView.setAdSize(bannerSize); @@ -284,6 +290,15 @@ public class AndroidAdMobBanner extends AndroidAdMob uiThread.exec(); } + private AdSize getAdaptiveBannerAdSize() + { + Display display = mActivityInstance.getWindowManager().getDefaultDisplay(); + DisplayMetrics outMetrics = new DisplayMetrics(); + + display.getMetrics(outMetrics); + return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(mActivityInstance, (int)(((float)outMetrics.widthPixels) / outMetrics.density)); + } + private class BannerListener extends AdListener { public void onAdLoaded() @@ -348,6 +363,7 @@ public class AndroidAdMobBanner extends AndroidAdMob private static final int TYPE_MEDIUM_RECTANGLE = 3; private static final int TYPE_SMART_BANNER = 4; private static final int TYPE_WIDE_SKYSCRAPER = 5; + private static final int TYPE_ADAPTIVE_BANNER = 6; private static final int APP_STATE_CREATE = 0; private static final int APP_STATE_START = 1; diff --git a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial.java b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial.java index ebddadb..72f4771 100644 --- a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial.java +++ b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial.java @@ -48,6 +48,7 @@ public class AndroidAdMobInterstitial extends AndroidAdMob public AndroidAdMobInterstitial(Activity activityInstance) { + super(activityInstance); mInterstitialListener = new InterstitialListener(); mActivityInstance = activityInstance; } diff --git a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo.java b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo.java index 3bae402..636789a 100644 --- a/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo.java +++ b/QtAndroidTools/src/com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo.java @@ -43,6 +43,7 @@ public class AndroidAdMobRewardedVideo extends AndroidAdMob public AndroidAdMobRewardedVideo(Activity activityInstance) { + super(activityInstance); mRewardedVideoListener = new RewardedVideoListener(); mActivityInstance = activityInstance; } diff --git a/QtAndroidToolsDemo/tools/AndroidAdMobBanner.qml b/QtAndroidToolsDemo/tools/AndroidAdMobBanner.qml index 74c3965..7d3d031 100644 --- a/QtAndroidToolsDemo/tools/AndroidAdMobBanner.qml +++ b/QtAndroidToolsDemo/tools/AndroidAdMobBanner.qml @@ -4,7 +4,7 @@ import QtQuick.Controls 2.12 import QtQuick.Dialogs 1.3 import QtAndroidTools 1.0 -Page { +ScrollablePage { id: page padding: 0 @@ -12,7 +12,7 @@ Page { width: parent.wdith height: parent.height * 0.9 anchors.centerIn: parent - spacing: 20 + spacing: 10 Label { anchors.horizontalCenter: parent.horizontalCenter @@ -74,12 +74,43 @@ Page { text: "Banner not loaded" } + Label { + anchors.horizontalCenter: parent.horizontalCenter + font.bold: true + font.pixelSize: 15 + text: "Adaptive Banner" + } + Rectangle { + anchors.horizontalCenter: parent.horizontalCenter + border.width: 1 + border.color: "black" + width: banner3.width + height: banner3.height + + QtAndroidAdMobBanner { + id: banner3 + unitId: "ca-app-pub-3940256099942544/6300978111" + type: QtAndroidAdMobBanner.TYPE_ADAPTIVE_BANNER + keywords: ["keyword_1", "keyword_2", "keyword_3"] + onLoading: banner3state.text = "Loading" + onLoaded: banner3state.text = "Loaded" + onLoadError: banner3state.text = "Error " + errorId + } + } + Label { + id: banner3state + anchors.horizontalCenter: parent.horizontalCenter + font.pixelSize: 13 + text: "Banner not loaded" + } + Button { anchors.horizontalCenter: parent.horizontalCenter text: "Show banners" onClicked: { banner1.show(); banner2.show(); + banner3.show(); } } Button { @@ -88,6 +119,7 @@ Page { onClicked: { banner1.hide(); banner2.hide(); + banner3.hide(); } } Button { @@ -96,6 +128,7 @@ Page { onClicked: { banner1.reload(); banner2.reload(); + banner3.reload(); } } }