[英]Ads in Android Daydream/DreamService?
有沒有人知道任何Android廣告SDK是否適用於新的DreamService功能? 我嘗試使用AdMob,並首先看到Interstitial類構造函數顯式需要一個Activity。 我看到AdView有一個構造函數,只需要一個上下文,所以我嘗試了,但得到一個運行時異常告訴我問題是我正在嘗試使用除Activity之外的上下文來擴充AdView。 我查看了嘗試亞馬遜移動廣告API,但它看起來與AdMob相同。
我試圖發揮創意,從我的DreamService開始創建插頁式廣告的另一個活動,但它是在DreamService用戶界面后創建的(有點理智,因為Daydream覆蓋了所有內容)。 有沒有人知道在Daydream中使用廣告的任何解決方案?
我想出了解決這個問題的東西,盡管我仍然不喜歡這個解決方案。 如果有人知道的話,歡迎采用更優雅的方法。
我所做的是使用mMedia SDK而不是AdMob。 他們的非頁內廣告和AdView類都可以在構造函數中使用Context而不是Activity。 由於它在Dream疊加層后面打開,因此插頁式廣告仍然無法解決。 所以我最終做的是在我的Dream的XML布局中添加AdView,然后將其可見性設置為View.GONE,直到我想要顯示它。 當我需要顯示廣告時,我將其設置為View.VISIBLE。
我遇到的另一個問題是,在點擊AdView后,它會使用廣告的網址啟動瀏覽器,這當然會在Dream背后打開,從而無法展示廣告。 所以我最終將Dream設置為交互式,捕獲onTouchEvent,然后如果點擊發生時廣告是可見的,請調用Ad的callOnClick方法。 我還必須將Ad的RequestListener設置為我的Dream Service並實現MMAdOverlayLaunched方法,該方法在廣告啟動瀏覽器時調用。 在這個方法中,我只是調用finish()來停止Dream並讓瀏覽器顯示廣告。
@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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.