首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Daydream/DreamService中的广告?

Android Daydream/DreamService中的广告?
EN

Stack Overflow用户
提问于 2013-07-19 08:17:05
回答 1查看 456关注 0票数 0

有没有人知道Android Advertising SDK中是否有新的DreamService功能?我尝试使用AdMob,第一次看到Interstitial类构造函数显式地需要一个Activity。我看到AdView有一个只需要上下文的构造函数,所以我尝试了一下,但得到了一个运行时异常,告诉我问题是我试图使用上下文而不是Activity来膨胀AdView。我尝试过亚马逊移动广告应用程序接口,但它看起来和AdMob的一模一样。

我试着变得更有创意,从我的DreamService上开始了另一个活动,创建了一个间隙广告,但它是在DreamService UI后面创建的(有点道理,因为白日梦覆盖了一切)。有没有人知道在白日梦中使用广告的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2013-07-21 21:55:22

我想出了一些方法来解决这个问题,尽管我仍然不太喜欢这个解决方案。会欢迎一种更优雅的方法,如果有人知道的话。

我所做的是使用mMedia开发工具包而不是AdMob。它们的Interstitial和AdView类都可以接受构造函数中的上下文而不是活动。间隙仍然没有为我工作,因为它打开后的梦想覆盖。所以我最后做的就是在我的Dream布局中添加一个AdView,然后将它的可见性设置为View.GONE,直到我想要显示它为止。当需要显示广告时,我将其设置为View.VISIBLE。

我遇到的另一个问题是,在点击AdView后,它会启动带有广告网址的浏览器,当然,它会在Dream后面打开,这违背了显示广告的目的。因此,我最终将Dream设置为交互式的,捕获了onTouchEvent,然后如果在单击时广告是可见的,则调用广告的callOnClick方法。我还必须将广告的RequestListener设置为我的梦想服务,并实现MMAdOverlayLaunched方法,该方法在广告启动浏览器时调用。在这个方法中,我只是调用finish()来停止Dream并让浏览器显示广告。

代码语言:javascript
复制
@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    // Exit dream upon user touch
    setInteractive(true);
    // Hide system UI
    setFullscreen(true);
    // Set the dream layout
    setContentView(R.layout.dream_layout);
    //Initialize Ads
    this.initAdvertising();
}

private void initAdvertising(){
     MMSDK.initialize(this);
     mDreamAd = (MMAdView) findViewById(R.id.adView);
     //Separate thread will handle showing the ad
     mDreamAd.setVisibility(View.GONE);
     mAdRequest = new MMRequest();
     //TODO add metadata to Request
     mDreamAd.setMMRequest(mAdRequest);
     mDreamAd.setListener(this);
     mDreamAd.getAd();
}

@Override
public boolean dispatchTouchEvent(MotionEvent event){
    super.dispatchTouchEvent(event);
    if(mDreamAd != null && mDreamAd.isShown()){
        mDreamAd.callOnClick();
    }
    return true;
}

@Override
public void MMAdOverlayLaunched(MMAd ad) {
    //Finish so we can display the ad the user has clicked
    if(ad.equals(this.mDreamAd))
        this.finish();

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17736156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档