Android:AdMob 视图会中断来自游戏手柄的输入(onKey 事件停止工作)



我在游戏中展示 Admob 横幅广告,但我注意到 AdView 不知何故弄乱了游戏手柄的输入。
例如,像X,A,L1,R1这样的按钮停止工作,它们不会触发onKeyDownonKeyUp事件。其他按钮会生成不正确的键代码,例如,当按下 Y 时,而不是KEYCODE_BUTTON_Y我收到KEYCODE_BUTTON_MENU.

此问题发生在我触摸屏幕(而不是横幅本身)后。如果我不触摸屏幕,游戏手柄工作正常。

因此,AdView似乎正在"窃取"关键事件或类似的东西。

我尝试了不同的AdView设置,例如setFocusable(false),位置,尝试为其分配自定义KeyListener - 没有任何帮助。
我尝试了 2 种不同的游戏手柄和不同的安卓设备。
只有当我删除 AdView 或使其不可见时,此问题才会消失......

好的,似乎我找到了解决方案。如果我覆盖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;
    }
}

这对我有用:

    `// 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 事件中,我已将焦点设置为我的布局和 voile!!

最新更新