package org.cocos2dx.javascript;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.nfc.Tag;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.OnUserEarnedRewardListener;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
import com.google.android.gms.ads.rewarded.RewardItem;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd;
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAdLoadCallback;
public class GoogleAdsManage {
//单例
private static GoogleAdsManage _Instance = null;
public static GoogleAdsManage getInstance(){
if (null == _Instance) {
_Instance = new GoogleAdsManage();
}
return _Instance;
}
private static final String TAG = "GoogleMobAds";
private AppActivity mainActive = null;
//InterstitialAd在Activity的整个生命周期中,可以使用一个对象来请求并显示多个插页式广告,因此只需构造一次即可。
private InterstitialAd mInterstitialAd;
//Banner 横幅广告
FrameLayout.LayoutParams layoutParamsBanner;
AdView mAdView;
//激励广告
RewardedAd rewardedAd;
boolean isLoadReward;
//插屏激励广告
RewardedInterstitialAd rewardedInterstitialAd;
/*
* 初始化方法 再OnCreat方法中初始化此函数
*/
public void Init(AppActivity context)
{
this.mainActive = context;
//初始化广告 SDK.
MobileAds.initialize(this.mainActive, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
Log.d("GoogleMobAds", "广告 : onInitializationComplete: ");
LoadInterstitialAd();
LoadRewardAd();
}
});
}
/** 打开广告 供外部调用 **/
/*
* 显示横屏 Banner横幅广告
*/
public static void showBannerAd()
{
GoogleAdsManage.getInstance().ShowBannerAd();
}
/*
* 隐藏横幅Banner广告
* */
public void HideBannerAd(){
AppActivity mActivity = (AppActivity) GoogleAdsManage.getInstance().mainActive;
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(mAdView!=null) {
mAdView.setVisibility(View.VISIBLE);
}
}
});
}
/*
* 显示激励视频
*/
public static void showRewardedVideo()
{
GoogleAdsManage.getInstance().ShowRewardAds();
}
/*
* 展示插屏广告
* */
public static void showInterstitialAd()
{
GoogleAdsManage.getInstance().ShowInterstitialAd();
}
/*
* 展示插屏激励广告
* */
public static void ShowRewardInterAd()
{
GoogleAdsManage.getInstance().showRewardedInterstitial();
}
/** 打开广告 供外部调用 **/
/** 插屏激励广告 **/
boolean isLoadRI=false;
boolean isLoadRIError=false;
void lodeRewardedInterstitial() {
try {
AppActivity mActivity = (AppActivity) GoogleAdsManage.getInstance().mainActive;
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (rewardedInterstitialAd == null) {
AdRequest adRequest = new AdRequest.Builder().build();
// Use the test ad unit ID to load an ad.
RewardedInterstitialAd.load(
GoogleAdsManage.getInstance().mainActive, Constants.RewardedInterstitialAdID, adRequest,
new RewardedInterstitialAdLoadCallback() {
@Override
public void onAdLoaded(RewardedInterstitialAd ad) {
GoogleAdsManage.getInstance().rewardedInterstitialAd = ad;
isLoadRI =false;
isLoadRIError=false;
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
// Handle the error.
GoogleAdsManage.getInstance().rewardedInterstitialAd = null;
}
});
}
}
});
} catch (Exception e) {
}
}
public void showRewardedInterstitial() {
try {
AppActivity mActivity = (AppActivity) GoogleAdsManage.getInstance().mainActive;
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (rewardedInterstitialAd == null) {
GoogleAdsManage.getInstance().lodeRewardedInterstitial();
} else {
rewardedInterstitialAd.setFullScreenContentCallback(
new FullScreenContentCallback() {
@Override
public void onAdShowedFullScreenContent() {
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
GoogleAdsManage.getInstance().rewardedInterstitialAd = null;
if(!isLoadRIError) {
isLoadRIError = true;
GoogleAdsManage.getInstance().lodeRewardedInterstitial();
}
}
/**
* Called when full screen content is dismissed.
*/
@Override
public void onAdDismissedFullScreenContent() {
GoogleAdsManage.getInstance().rewardedInterstitialAd = null;
// Preload the next rewarded interstitial ad.
if (!isLoadRI) {
isLoadRI = true;
GoogleAdsManage.getInstance().lodeRewardedInterstitial();
}