Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Daydream/DreamService中的广告?_Android_Ads_Dreamservice - Fatal编程技术网

Android Daydream/DreamService中的广告?

Android Daydream/DreamService中的广告?,android,ads,dreamservice,Android,Ads,Dreamservice,有人知道Android广告SDK是否与新的DreamService功能配合使用吗?我尝试使用AdMob,第一次看到中间类构造函数显式地需要一个活动。我看到AdView有一个构造函数,它只需要一个上下文,所以我尝试了一下,但是得到一个运行时异常,告诉我问题是我试图使用一个上下文而不是活动来膨胀AdView。我试图尝试亚马逊移动广告API,但它似乎与AdMob完全相同 我试着发挥创意,从我的DreamService开始另一项活动,创建一个中间广告,但它是在DreamService UI后面创建的(这

有人知道Android广告SDK是否与新的DreamService功能配合使用吗?我尝试使用AdMob,第一次看到中间类构造函数显式地需要一个活动。我看到AdView有一个构造函数,它只需要一个上下文,所以我尝试了一下,但是得到一个运行时异常,告诉我问题是我试图使用一个上下文而不是活动来膨胀AdView。我试图尝试亚马逊移动广告API,但它似乎与AdMob完全相同


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

我想出了解决这个问题的办法,尽管我还是不太喜欢这个办法。如果有人知道的话,我们欢迎更优雅的方法

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

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

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

}

这最终效果好吗?金钱上/技术上?我的印象是,这对电池/UX来说是不好的。