2013-09-26 131 views
1

我在遊戲中顯示Admob橫幅廣告,我注意到AdView以某種方式混淆了遊戲板的輸入。
例如X,A,L1,R1等按鈕停止工作,它們不會觸發onKeyDownonKeyUp事件。 和其他按鈕生成不正確的鍵碼,例如,當按下Y時,而不是KEYCODE_BUTTON_Y我收到KEYCODE_BUTTON_MENUAndroid:AdMob視圖中斷來自遊戲板的輸入(onKey事件停止工作)

這個問題發生在我觸摸屏幕(不是橫幅本身)之後。如果我沒有觸摸屏幕,遊戲手柄工作正常。

所以看起來AdView是'偷'關鍵事件,或類似的東西。

我試驗過不同的AdView設置,如setFocusable(false),位置,嘗試將它分配給自定義KeyListener - 沒有任何幫助。
我嘗試了2種不同的遊戲手柄和不同的Android設備。
只有當我刪除AdView或使其不可見時,此問題纔會消失......

回答

1

好吧,好像我找到了解決方案。如果我覆蓋dispatchKeyEvent並取消派發onKey事件到AdView,那麼遊戲手柄工作正常。不知道是否可以做到這一點,但它的工作原理。

public class MyAdView extends AdView { 
    public MyAdView(Activity activity, AdSize adSize, String adUnitId) { 
     super(activity, adSize, adUnitId); 
    } 

    @Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     return false; 
    } 
} 
+0

我喜歡這個解決方案,但它不可能「最終的類AdView的子類」 – Lara

0

這個工作對我來說:

`// ADS 
    MobileAds.initialize(getApplicationContext(), getResources().getString(R.string.banner_ad_unit_id)); 
    mAdView = (AdView) findViewById(R.id.adView); 
    adRequest = new AdRequest.Builder().build(); 
    mAdView.loadAd(adRequest); 
    mAdView.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 
      RelativeLayout fl = (RelativeLayout) findViewById(R.id.frameCounter); 
      fl.setFocusableInTouchMode(true); 
      fl.requestFocus(); 
     } 
    });` 

在onAdLoaded事件,我將焦點設置到我的佈局和紗!