AdMob广告未在Android SDL应用程序中正确显示

AdMob广告未在Android SDL应用程序中正确显示,android,opengl-es,java-native-interface,admob,sdl,Android,Opengl Es,Java Native Interface,Admob,Sdl,在我的应用程序中执行AdMob广告时遇到问题。我正在使用和本机代码。Ad是在onCreate方法中创建的,如下所示: @Override protected void onCreate(Bundle savedInstanceState) { Log.v("SDL", "onCreate():" + mSingleton); super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.

在我的应用程序中执行AdMob广告时遇到问题。我正在使用和本机代码。Ad是在
onCreate
方法中创建的,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    Log.v("SDL", "onCreate():" + mSingleton);
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    SDLActivity.initialize();
    mSingleton = this;

    mSurface = new SDLSurface(getApplication());
    mLayout = new RelativeLayout(this);

    adView = new AdView( this );
    adView.setAdUnitId("ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX");
    adView.setAdSize(AdSize.BANNER);

    request = new AdRequest.Builder()
    .addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
    .build();

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adView.loadAd(request);

    mLayout.addView(mSurface);
    mLayout.addView(adView, params);

    setContentView(mLayout);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
我认为这段代码是正确的,因为广告位于屏幕上,但它不可见。我可以触摸屏幕上的广告应该在哪里,浏览器开始打开,所以广告实际上是加载的

在以下情况下,广告将正确显示:

  • 刷新时间到了(在AdMob帐户上设置,我已设置30秒)
  • Activity
    类调用
    onPause
    onResume
    方法时,我退出应用程序,然后继续
我在考虑一些刷新方法,但找不到任何解决此问题的方法。我尝试了以下方法:

adView.refreshDrawableState();
adView.setActivated( true );
adView.setEnabled( true );
adView.setFocusable( true );
adView.setHovered( true );
adView.showContextMenu();
我不知道还能做些什么。有什么建议吗

更新 我已经检查了我的logcat输出,但没有发现任何奇怪的地方:

1.  I/ActivityManager(  644): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.libsdl.app/.SDLActivity bnds=[184,839][360,1062]} from pid 12651
2.  I/ActivityManager(  644): Start proc org.libsdl.app for activity org.libsdl.app/.SDLActivity: pid=24024 uid=10123 gids={50123, 3003, 1028, 1015}
3.  W/linker  (24024): libopenal.so has text relocations. This is wasting memory and is a security risk. Please fix.
4.  I/LibraryLoader(24024): Expected native library version number "",actual native library version number ""
5.  I/chromium(24024): [INFO:library_loader_hooks.cc(116)] Chromium logging enabled: level = 0, default verbosity = 0
6.  I/BrowserStartupController(24024): Initializing chromium process, renderers=0
7.  E/AudioManagerAndroid(24024): BLUETOOTH permission is missing!
8.  W/Adreno-GSL(24024): <get_panel_settings:3802>: Android framework reported version 2. So, don't force ES30
9.  I/Adreno-EGL(24024): <qeglDrvAPI_eglInitialize:316>: EGL 1.4 QUALCOMM build:  (CL4169980)
10. I/Adreno-EGL(24024): OpenGL ES Shader Compiler Version: 17.01.10.SPL
11. I/Adreno-EGL(24024): Build Date: 11/06/13 Wed
12. I/Adreno-EGL(24024): Local Branch: 
13. I/Adreno-EGL(24024): Remote Branch: 
14. I/Adreno-EGL(24024): Local Patches: 
15. I/Adreno-EGL(24024): Reconstruct Branch: 
16. I/Ads     (24024): Starting ad request.
17. I/ActivityManager(  644): Displayed org.libsdl.app/.SDLActivity: +1s113ms
18. I/ActivityManager(  644): Process com.android.musicfx (pid 18286) has died.
19. E/rsC++   (12651): RS Message thread exiting.
20. I/OpenAL  (24024): _SC_NPROCESSORS_ONLN=2
21. I/dalvikvm-heap(10840): Grow heap (frag case) to 6.923MB for 1127536-byte allocation
22. I/chromium(10840): [INFO:CONSOLE(0)] "Document was loaded from Application Cache with manifest https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.appcache", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
23. I/chromium(10840): [INFO:CONSOLE(0)] "Application Cache Checking event", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
24. I/chromium(10840): [INFO:CONSOLE(0)] "Application Cache NoUpdate event", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
25. I/dalvikvm-heap(24024): Grow heap (frag case) to 4.740MB for 1127536-byte allocation
26. W/chromium(24024): [WARNING:proxy_service.cc(890)] PAC support disabled because there is no system implementation
27. I/Ads     (24024): Scheduling ad refresh 60000 milliseconds from now.
28. I/Ads     (24024): Ad finished loading.
29. W/ActivityThread(24024): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
30. W/KInfoc  (23003): The data section count is not equal! table:fm_public, count in format:13, count in data:14.
31. W/KInfoc  (23003): The data section count is not equal! table:fm_public, count in format:13, count in data:14.
32. I/wpa_supplicant(25610): wlan0: WPA: Group rekeying completed with 00:21:27:da:a8:64 [GTK=TKIP]
33. W/Uploader(29884): No account for auth token provided
34. W/Uploader(29884): No account for auth token provided
35. W/Uploader(29884): No account for auth token provided
36. I/wpa_supplicant(25610): wlan0: WPA: Group rekeying completed with 00:21:27:da:a8:64 [GTK=TKIP]
37. I/Ads     (24024): Starting ad request.
38. I/chromium(10840): [INFO:CONSOLE(0)] "Document was loaded from Application Cache with manifest https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.appcache", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
39. I/chromium(10840): [INFO:CONSOLE(0)] "Application Cache Checking event", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
40. I/chromium(10840): [INFO:CONSOLE(0)] "Application Cache NoUpdate event", source: https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
41. I/Ads     (24024): Scheduling ad refresh 60000 milliseconds from now.
42. I/Ads     (24024): Ad finished loading.
43. W/AwContents(24024): nativeOnDraw failed; clearing to background color.
1。I/ActivityManager(644):从pid 12651启动u0{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10200000cmp=org.libsdl.app/.SDLActivity bnds=[184839][3601062]}
2.I/ActivityManager(644):为activity org.libsdl.app/.SDLActivity启动proc org.libsdl.app程序:pid=24024 uid=10123 gids={50123300310281015}
3.W/linker(24024):libopenal.so具有文本重定位。这是在浪费内存,是一种安全风险。请修理。
4.I/LibraryLoader(24024):预期本机库版本号“”,实际本机库版本号“”
5.I/chromium(24024):[INFO:library\u loader\u hooks.cc(116)]已启用chromium日志记录:级别=0,默认详细度=0
6.I/BrowserStartupController(24024):初始化铬进程,渲染器=0
7.E/AudioManagerAndroid(24024):缺少蓝牙权限!
8.W/Adreno GSL(24024):Android框架报告版本2。所以,不要强迫ES30
9I/Adreno EGL(24024):EGL 1.4高通公司构建:(CL4169980)
10I/Adreno EGL(24024):OpenGL ES着色器编译器版本:17.01.10.SPL
11I/Adreno EGL(24024):建造日期:2013年6月11日星期三
12I/Adreno EGL(24024):当地分行:
13I/Adreno EGL(24024):远程分支:
14I/Adreno EGL(24024):局部贴片:
15I/Adreno EGL(24024):重建分支:
16I/Ads(24024):启动ad请求。
17I/ActivityManager(644):显示org.libsdl.app/.SDLActivity:+1s113ms
18I/ActivityManager(644):进程com.android.musicfx(pid 18286)已死亡。
19E/rsC++(12651):RS消息线程正在退出。
20I/OpenAL(24024):\u SC\u NPROCESSORS\u ONLN=2
21I/dalvikvm堆(10840):为1127536字节分配将堆(frag情况)增长到6.923MB
22I/chromium(10840):[INFO:CONSOLE(0)]“已使用清单从应用程序缓存加载文档https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.appcache“,资料来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
23I/chromium(10840):[信息:控制台(0)]“应用程序缓存检查事件”,来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
24I/chromium(10840):[信息:控制台(0)]“应用程序缓存无更新事件”,来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
25I/dalvikvm堆(24024):为1127536字节分配将堆(frag情况)增长到4.740MB
26W/chromium(24024):[警告:proxy_service.cc(890)]PAC支持已禁用,因为没有系统实现
27I/Ads(24024):计划从现在起60000毫秒的ad刷新。
28I/Ads(24024):Ad已完成加载。
29W/ActivityThread(24024):ClassLoader.loadClass:线程返回的类加载器。对于承载多个应用程序的进程,getContextClassLoader()可能会失败。您应该显式指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader());
30W/KInfoc(23003):数据段计数不相等!表:fm_公共,计数格式:13,计数数据:14。
31W/KInfoc(23003):数据段计数不相等!表:fm_公共,计数格式:13,计数数据:14。
32I/wpa_请求者(25610):wlan0:wpa:组重新键入完成时间为00:21:27:da:a8:64[GTK=TKIP]
33W/上传器(29884):未提供身份验证令牌的帐户
34W/上传器(29884):未提供身份验证令牌的帐户
35W/上传器(29884):未提供身份验证令牌的帐户
36I/wpa_请求者(25610):wlan0:wpa:组重新键入完成时间为00:21:27:da:a8:64[GTK=TKIP]
37I/Ads(24024):启动ad请求。
38I/chromium(10840):[INFO:CONSOLE(0)]“已使用清单从应用程序缓存加载文档https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.appcache“,资料来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
39I/chromium(10840):[信息:控制台(0)]“应用程序缓存检查事件”,来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
40I/chromium(10840):[信息:控制台(0)]“应用程序缓存无更新事件”,来源:https://googleads.g.doubleclick.net/mads/static/mad/sdk/native/sdk-core-v40.html (0)
41I/Ads(24024):计划从现在起60000毫秒的ad刷新。
42I/Ads(24024):Ad已完成加载。
43W/AwContents(24024):nativeOnDraw失败;清除为背景色。
在第16行,广告开始请求,在第28行有一条消息,广告已经完成加载,但它没有显示在屏幕上。
60秒后,启动另一个请求(第37行),完成后,屏幕上出现广告。最后一行有一条消息说,
nativeOnDraw
失败了,我不知道这是否与此有关

你能试着改变一下顺序吗

adView.loadAd(request);

mLayout.addView(mSurface);
mLayout.addView(adView, params);
致:

因为您的视图未添加到视图组中,所以在第一次运行时可能会出现问题。 问题是,AdMob非常聪明,它会检查AdView和家长是否可见。所以,要
mLayout.addView(mSurface);
mLayout.addView(adView, params);

adView.loadAd(request);
adView.loadAd(request);
adView.setBackgroundColor(Color.TRANSPARENT);

mLayout.addView(mSurface);
mLayout.addView(adView, params);