在AndEngine中显示广告

7
我正在尝试使用Greystrip在AndEngine中展示广告。
我无法弄清楚如何完成此操作,因为它不使用布局来填充视图,而是使用精灵。
我使用BaseGameActivity为每个场景创建应用程序以显示广告。
在GreyStrip中,这是他们告诉您如何将广告集成到应用程序中的方式:
在将调用添加到GSSDK的应用程序之前,您需要将SDK合并到AndroidManifest.xml中。在
中添加以下内容,将替换为唯一标识您的应用程序的软件包标识符。此内容提供程序管理广告内容的本地存储,而活动则管理广告显示。
 <provider android:name="com.greystripe.android.sdk.AdContentProvider"
    android:authorities="<YOUR_APPLICATION_PACKAGE>.AdContentProvider"
android:multiprocess="true"
android:exported="false" />
<activity android:name="com.greystripe.android.sdk.AdView"
android:configChanges="keyboard|keyboardHidden|orientation" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

要初始化Greystripe SDK,请在启动时调用initialize方法。这应该在您的应用程序的onCreate()方法中完成。此调用将生成一个后台线程来初始化我们的活动,然后将控制返回到您的应用程序。在此后台中,Greystripe活动将下载广告以及任何SDK更新。参数:ctx:您的应用程序上下文实例appId:使用应用程序注册期间提供的appId。提供无效的appId将导致SDK显示错误通知广告。
 public static GSSDK initialize(Context ctx, String appId)

要使用横幅,请将以下内容放置在您的main.xml文件中:
<view class="com.greystripe.android.sdk.BannerView"
android:id="@+id/gsBanner"
android:layout_width="320dp"
android:layout_height="48dp"/>

要在代码中引用横幅视图,请使用findViewById,就像引用任何main.xml元素一样:
BannerView myBanner = (BannerView) findViewById(R.id.gsBanner);

如需添加,请致电

myBanner.refresh();

现在的问题是,由于我没有XML布局,我无法弄清楚如何为广告视图填充布局?

有人有什么想法吗?

编辑:

我在网上的教程中看到有人这样做,但我该如何在AndEngine中填充它?

try {
    String applicationId = Utils.scrapeIgnoreCase(externalParams, "<param name=\"id\">", "</param>");           
    GSSDK.initialize(context, applicationId);

    BannerView myBanner = new BannerView(context);          
    myBanner.setLayoutParams(view.getLayoutParams());
    myBanner.addListener(new GreyStripeBannerListener());           
    view.addView(myBanner);
    myBanner.refresh();
    myBanner.setOnClickListener(new  View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Click();
        }
    });

你用的是什么布局呢?至少你得有一些线性/相对布局来在屏幕上安排你的组件。如果是这样,只需创建LayoutParams lp...然后mymainview.addView(myBanner,lp);然后就可以继续进行了。 - Sergey Benner
使用GreyStripe时,您需要使用BannerView,就像我在问题中提到的那样。请查看我的更新。问题是我无法弄清楚如何将其与AndEngine集成。 - coder_For_Life22
在AdView中,onCreate()是什么?你如何在其中设置setContentView()? - Sergey Benner
1
我觉得这个可能是你的情况 http://stackoverflow.com/questions/8237346/showing-adds-in-gameplay-in-andengine-android - Sergey Benner
页面上的最后一个回答看起来像是我需要的。就BannerView而言,它会是什么样子?如果您能给我伪代码那就太好了。 - coder_For_Life22
1个回答

6
我正在使用AdMob,但应该类似。
就像@Sergey Benner所提到的,您必须在活动中覆盖onSetContentView,然后手动创建RenderSurfaceView和广告视图。
首先,创建一个FrameLayout来包含AndEngine的视图和广告视图。 添加AndEngine的视图并创建广告视图,然后将帧布局设置为内容视图。
@Override
protected void onSetContentView() {
    //Creating the parent frame layout:
    final FrameLayout frameLayout = new FrameLayout(this);
    //Creating its layout params, making it fill the screen.
    final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
                    FrameLayout.LayoutParams.FILL_PARENT);

    //Creating the banner view.
    BannerView bannerView = new BannerView(this);

    //....
    //Do any initiallizations on the banner view here.
    //....

    //Creating the banner layout params. With this params, the ad will be placed in the top of the screen, middle horizontally.
    final FrameLayout.LayoutParams bannerViewLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.TOP | Gravity.CENTER_HORIZONTAL);

    //Creating AndEngine's view.
    this.mRenderSurfaceView = new RenderSurfaceView(this);
    mRenderSurfaceView.setRenderer(mEngine, this);

    //createSurfaceViewLayoutParams is an AndEngine method for creating the params for its view.
    final android.widget.FrameLayout.LayoutParams surfaceViewLayoutParams =
            new FrameLayout.LayoutParams(super.createSurfaceViewLayoutParams());

    //Adding the views to the frame layout.
    frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);
    frameLayout.addView(bannerView, bannerViewLayoutParams);

    //Setting content view
    this.setContentView(frameLayout, frameLayoutLayoutParams);
}

将此方法放置在您的BaseGameActivity类中。


1
Jong再次拯救了一天!(=伙计,你太棒了。你真的帮了我很多忙。无法感谢你。此外,在frameLayout.addView(this.mAdView, bannerViewLayoutParams);中应该是frameLayout.addView(this.bannerView, bannerViewLayoutParams);对吗?) - coder_For_Life22
1
是的,我刚忘记改它了(这是我的游戏中的一个方法,但我使用了AdMob“AdView”。我现在会修复它的:) - Jong
1
尝试中 :) 我的表弟帮了一点忙。那个游戏的图形很简单,有点糟糕,所以每个设备都能运行它。在我看来,游戏玩法比图形更重要。 - Jong
我遇到了同样的问题,我在这里发布了我的代码,请问您能否提供一些解决方案。http://stackoverflow.com/questions/29607706/unable-to-display-game-screen-while-admob-integrated-with-andengine-google-pla - Tushar Kanani
我尝试了你的代码,它成功编译了,但是当我在设备上部署我的游戏时没有广告视图。除了上面的代码之外,是否还有其他需要完成的事情才能使广告视图出现? - Crawler
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接