仅在特定屏幕上显示AdMob

时间:2015-01-22 17:33:56

标签: android eclipse libgdx admob

我有一个关于Libgdx的游戏,我一直在尝试添加AdMob横幅。 我有2个问题,

1)横幅需要一分钟才能加载并显示在屏幕上,它不应该

2)横幅显示在每个屏幕上,我希望它仅在菜单屏幕上显示,而不是在游戏屏幕上显示。

以下是我使用的代码:

public class AndroidLauncher extends AndroidApplication  {
AdView adView ;
@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
//  initialize(new GameMain(), config);
    RelativeLayout layout = new RelativeLayout(this);

    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    // Create the libgdx View
    View gameView = initializeForView(new GameMain(),config);

    layout.addView(gameView);
     adView = new AdView(this);
    adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
    adView.setAdSize(AdSize.BANNER);
    AdRequest adRequest = new AdRequest.Builder().build();
    RelativeLayout.LayoutParams adParams = 
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    layout.addView(adView, adParams);
    // Hook it all up
    adView.loadAd(adRequest);
    setContentView(layout);

    }

4 个答案:

答案 0 :(得分:0)

横幅真的需要几分钟才能加载,因此您必须在展示之前加载横幅一段时间。关于第二个问题,当你不想展示横幅时,你应该设置为假;并设置为true以在需要时显示它。

答案 1 :(得分:0)

关于您的第一个问题

加载广告需要安静缓慢的网络请求。您可以尝试按时间顺序定义广告,但我怀疑这会提供更好的体验:

 adView = new AdView(this);
    adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
    adView.setAdSize(AdSize.BANNER);
    AdRequest adRequest = new AdRequest.Builder().build();
    // Hook it all up
    adView.loadAd(adRequest);
    RelativeLayout.LayoutParams adParams = 
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    layout.addView(adView, adParams);

关于你的第二个问题......

有多种方法可以解决这个问题。最好的解决方案是使用能够显示和隐藏广告的界面。

在游戏的核心项目中定义界面AdHandler.java:

public interface AdHandler {
   public void showAds(boolean show);
}

然后,在你的android项目中实现接口。

只需关注控制admob广告的official libgdx guide即可。

转到话题:

"的控制 此示例将向您展示如何在libgdx应用内打开和关闭AdMob View的可见性。 " https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx

它拥有您所需要的一切。

答案 2 :(得分:0)

我看了这个并在代码上实现了它,但广告并没有消失。 这是android启动器:

    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
//  initialize(new GameMain(), config);
    RelativeLayout layout = new RelativeLayout(this);

    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    // Create the libgdx View
    View gameView = initializeForView(new GameMain(),config);

    layout.addView(gameView);
     adView = new AdView(this);
    adView.setAdUnitId("ca-app-pub-4647665408548722/8293730490");
    adView.setAdSize(AdSize.BANNER);
    AdRequest adRequest = new AdRequest.Builder().build();
    RelativeLayout.LayoutParams adParams = 
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    layout.addView(adView, adParams);
    // Hook it all up
    adView.loadAd(adRequest);
    setContentView(layout);

    }
private final int SHOW_ADS = 1;
private final int HIDE_ADS = 0;

protected Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) {
        switch(msg.what) {
            case SHOW_ADS:
            {
                adView.setVisibility(View.VISIBLE);
                break;
            }
            case HIDE_ADS:
            {
                adView.setVisibility(View.GONE);
                break;
            }
        }
    }
};
@Override
public void showAds(boolean show) {
   handler.sendEmptyMessage(show ? SHOW_ADS : HIDE_ADS);
}}

在窗口中,我不希望广告显示,我这样做了:

构造

     public Main(Game game,AdHandler a)
 {
     this.game = game;
     this.ad =a;
 }

以及对函数的调用:

ad.showAds(false);

代码有什么问题?

编辑:我检查过androidLauncher中的showads函数甚至没有被调用我找不到原因

答案 3 :(得分:0)

我找到了这个解决方案。请测试一下:

将此添加到LinearLayout

<com.google.ads.AdView
    android:id="@+id/adMob1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="{AdID}"
    ads:loadAdOnCreate="true"/>

然后将其添加到OnCreate

AdView adView = (AdView) findViewById(R.id.adMob1);
    adView.loadAd(new AdRequest());

如果有效,您可以添加特定代码。

了解更多信息https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals