3

I am making a game on LibGdx that has video ads. I implemented interface and it's methods. Everything works, video is shown.

AndroidLauncher:

public class MainAndroidLauncherAuthorization extends AndroidApplication implements 
AdsController, RewardedVideoAdListener, AdHandler {

private static final String TAG = "GoogleActivity";
private static final int RC_SIGN_IN = 9001;
private FirebaseAuth mAuth;
private GoogleSignInClient mGoogleSignInClient;
private RewardedVideoAd rewardedVideoAd;
private boolean isRewardLoaded;
private boolean completed;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();

    setContentView(R.layout.activity);
    initialize(new STARTGame(this, this), config);

    MobileAds.initialize(this, "ca-app-pub-3940256099942544/5224354917");
    rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
    rewardedVideoAd.setRewardedVideoAdListener(this);
    loadRewardedVideoAd();
}

public void loadRewardedVideoAd() {
    isRewardLoaded=false;
    rewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new 
AdRequest.Builder().build());
}

@Override
public void onRewardedVideoAdLoaded() {
    isRewardLoaded =true;
}

@Override
public void showRewardedVideo() {

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (rewardedVideoAd.isLoaded()) {
                rewardedVideoAd.show();
            } else {
                loadRewardedVideoAd();
            }
        }
    });
}

@Override
public boolean hasVideoReward(){
    return isRewardLoaded;
}

@Override
public void onRewardedVideoAdOpened() {
}

@Override
public void onRewardedVideoStarted() {
}

@Override
public void onRewardedVideoAdClosed() {
    loadRewardedVideoAd();
}

@Override
public void onRewarded(RewardItem reward) {
    loadRewardedVideoAd();
}

@Override
public void onRewardedVideoAdLeftApplication() {
       }

@Override
public void onRewardedVideoAdFailedToLoad(int i) {
}

@Override
public void onRewardedVideoCompleted() {
    completed = true;
}

@Override
public boolean addCoins() {
    return completed;
}

@Override
protected void onResume() {
    super.onResume();
    rewardedVideoAd.resume(this);
}

@Override
public void onPause() {
    super.onPause();
    rewardedVideoAd.pause(this);
}

@Override
public void onDestroy() {
    super.onDestroy();
    rewardedVideoAd.destroy(this);
}

@Override
public void coin_10() {
    Prefs prefs = new Prefs();
    prefs.plus_Coins_bank(10);
}
}

Interface:

public interface AdsController {
void showRewardedVideo();
void loadRewardedVideoAd();

boolean addCoins();

boolean hasVideoReward();

Core:

public class Win_01_18 extends Window implements AdsController, AdHandler {
private  Prefs prefs;

public Win_01_18(AdHandler sums, final AdsController adsController, final AssetMan assetMan) {
    super("", assetMan.get_skin_dialogs(), "dialog_window_main");

    *******

    Button btn_buy_10 = new Button(assetMan.get_skin_buttons_coins_video(), "btn_video_long");
    ***
    btn_buy_10.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {

            adsController.showRewardedVideo();

            super.clicked(event, x, y);
        }
    });

@Override
public void showRewardedVideo() {

}

@Override
public void loadRewardedVideoAd() {
}

@Override
public boolean addCoins() {
    return false;
}

@Override
public boolean hasVideoReward() {
    return false;
}

@Override
public void coin_10() {
}

Everything works. There are 2 questions: 1 - How to check the onRewardedVideoCompleted() method from core-class? 2 - On what event should the coins be added for watching a video in the core-class?

Retron
  • 119
  • 6

1 Answers1

0

I am currently trying this myself. But what about changing the

void showRewardedVideoAd()

to a boolean

boolean showRewardedVideoAd()

And then in the onRewardedVideoCompleted() you return true and if it fails you return false.

Then in the core where you call the ad you put

boolean adFinished = False;
adFinished = adsController.showRewardedVideo();
if(adFinished){
    // give them the coins or whatever
} else {
    // the ad failed or the clicked it away early or something. Don't give them coins and go on
}
Kleysley
  • 505
  • 3
  • 12