我回答了here,您如何将 AdMob 横幅广告集成到您的 LibGDX 项目中。
现在我在横幅广告整合后回答InterstitialAd整合。
private static final String AD_UNIT_ID_INTERSTITIAL = "ca-app-pub-XXXXX/XXXXX";
private InterstitialAd interstitialAd;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
...
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_UNIT_ID_INTERSTITIAL);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {}
@Override
public void onAdClosed() {
loadIntersitialAd();
}
});
loadIntersitialAd();
}
private void loadIntersitialAd(){
AdRequest interstitialRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialRequest);
}
@Override
public void showOrLoadInterstitial() {
runOnUiThread(new Runnable() {
public void run() {
if (interstitialAd.isLoaded())
interstitialAd.show();
else
loadIntersitialAd();
}
});
}
需要一个接口来从核心模块调用showOrLoadInterstitial,所以我在核心模块内部创建了IActivityRequestHandler,并将这个接口实现到android模块的AndroidLauncher。
public interface IActivityRequestHandler {
void showOrLoadInterstitial();
}
编辑
您不能使用类/接口名称调用非静态方法showOrLoadInterstitial(),需要IActivityRequestHandler 实现类的对象,因此创建MyGdxGame 的参数化构造函数并从android 模块传递引用。
public class AndroidLauncher extends AndroidApplication implements IActivityRequestHandler {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View gameView=initializeForView(new MyGdxGame(this));
....
....
}
在MyGdxGame游戏类中捕获IActivityRequestHandler的引用
public class MyGdxGame extends Game {
Public IActivityRequestHandler requestHandler;
public MyGdxGame(IActivityRequestHandler requestHandler){
this.requestHandler=requestHandler;
}
...
}
现在你有了对象引用,可以调用requestHandler.showOrLoadInterstitial()