1

我在我的游戏中显示 Admob 横幅广告,我注意到 AdView 以某种方式与来自游戏手柄的输入相混淆。
例如 X、A、L1、R1 等按钮停止工作,它们不会触发onKeyDownonKeyUp事件。其他按钮会生成不正确的键码,例如按下 Y 时,而不是KEYCODE_BUTTON_YI receive KEYCODE_BUTTON_MENU

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

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

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

4

2 回答 2

1

好的,好像我找到了解决方案。如果我覆盖dispatchKeyEvent并取消向 AdView 发送 onKey 事件,则游戏手柄可以正常工作。不确定这样做是否可以,但它有效。

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;
    }
}
于 2013-09-26T11:52:34.107 回答
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 事件中,我已经将焦点设置在我的布局和 voile 上!!!

于 2016-11-25T17:54:08.107 回答