Added AbMob adaptive banner

This commit is contained in:
FalsinSoft 2021-04-07 17:10:49 +02:00
parent 42488003b9
commit a1fdf22e23
6 changed files with 84 additions and 4 deletions

View File

@ -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
{

View File

@ -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;
}
}
}

View File

@ -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;

View File

@ -48,6 +48,7 @@ public class AndroidAdMobInterstitial extends AndroidAdMob
public AndroidAdMobInterstitial(Activity activityInstance)
{
super(activityInstance);
mInterstitialListener = new InterstitialListener();
mActivityInstance = activityInstance;
}

View File

@ -43,6 +43,7 @@ public class AndroidAdMobRewardedVideo extends AndroidAdMob
public AndroidAdMobRewardedVideo(Activity activityInstance)
{
super(activityInstance);
mRewardedVideoListener = new RewardedVideoListener();
mActivityInstance = activityInstance;
}

View File

@ -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();
}
}
}