如何在LibGDX And​​roid项目中实施AdMob Ads? [英] How can I implement AdMob Ads in a LibGDX Android project?

查看:116
本文介绍了如何在LibGDX And​​roid项目中实施AdMob Ads?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了这个Flappy Bird GIT项目: https://github.com/barodapride/flappy - 教程-barodapride
如何在此实现BannerAd?
没有布局文件。
我该如何实施InterstitialAd?
如果我尝试编写

  public InterstitialAd mInterstitialAd; 

然后它显示无法解析符号InterstitialAd



我知道如何在普通的Android Studio项目中做到这一点,但这是我第一次使用libGDX,这非常复杂...

解决方案

我回答了此处,如何您可以将AdMob横幅广告整合到您的LibGDX项目中。



现在我在横幅广告集成后回答 InterstitialAd / p>

  private static final String AD_UNIT_ID_INTERSTITIAL =ca-app-pub-XXXXX / XXXXX; 

私下InterstitialAd interstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

...
...

interstitialAd =新的InterstitialAd(this);
interstitialAd.setAdUnitId(AD_UNIT_ID_INTERSTITIAL);
interstitialAd.setAdListener(new AdListener(){
@Override
public void onAdLoaded(){}
$ b @Override
public void onAdClosed(){
loadIntersitialAd();
}
});

loadIntersitialAd();


$ b 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 。 / p>

  public interface IActivityRequestHandler {

showOrLoadInterstitial();
}

编辑

您不能使用类/接口名称调用非静态方法, showOrLoadInterstitial(),需要 IActivityRequestHandler 实现类,创建一个参数化的构造函数 MyGdxGame 并传递来自android模块的引用。

  public class AndroidLauncher扩展了AndroidApplication实现IActivityRequestHandler {
$ b $ @Override
protected void onCreate Bundle savedInstanceState){
super.onCreate(savedInstanceState);

查看gameView = initializeForView(new MyGdxGame(this));
....
....
}

MyGdxGame 游戏类中添加 IActivityRequestHandler 的引用 $ b

  public class MyGdxGame extends Game {

Public IActivityRequestHandler requestHandler;

public MyGdxGame(IActivityRequestHandler requestHandler){
this.requestHandler = requestHandler;
}

...
}

现在您已经有了对象引用,可以调用 requestHandler.showOrLoadInterstitial()


I found this Flappy Bird GIT project: https://github.com/barodapride/flappy-tutorial-barodapride How can I implement the BannerAd in this? There is no layout file. And how can I implement the InterstitialAd? If I try to write

public InterstitialAd mInterstitialAd;

Then it says "cannot resolve symbol InterstitialAd"

I know how to do this in a normal Android Studio project, but this is the first time I'm working with libGDX and this is so complicated...

解决方案

I answered here, how you integrate AdMob banner Ad inside your LibGDX project.

Now I answer InterstitialAd integration after Integration of banner Ad.

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

Need an interface to call showOrLoadInterstitial from core module so I created IActivityRequestHandler inside core module and implement this interface to AndroidLauncher of android module.

public interface IActivityRequestHandler {

     void showOrLoadInterstitial();
}

EDIT

You can't call non-static method, showOrLoadInterstitial() with class/interface name, need an object of IActivityRequestHandler implemented class so create a parameterized constructor of MyGdxGame and pass reference from android module.

 public class AndroidLauncher extends AndroidApplication implements IActivityRequestHandler  {

   @Override
   protected void onCreate (Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       View gameView=initializeForView(new MyGdxGame(this));
       ....
       ....
   }

Capture reference of IActivityRequestHandler inside MyGdxGame Game class

public class MyGdxGame extends Game {

   Public IActivityRequestHandler requestHandler;

   public MyGdxGame(IActivityRequestHandler requestHandler){
       this.requestHandler=requestHandler;
   }

   ...
}

Now you've object reference, can called requestHandler.showOrLoadInterstitial()

这篇关于如何在LibGDX And​​roid项目中实施AdMob Ads?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆