Don't show admob ads
This is my first android app and I am trying to use admob ads for my app, but it doesn't work despite everything I have done.
These are the codes in my activity related to the declaration
protected void onCreate(Bundle savedInstanceState) {
........
LinearLayout rootLayout = (LinearLayout) findViewById(R.id.ForViewAd);
AdView adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
//i've gotten the test ad id by first setting this as 'abc'
//and then reading off the logcat
adView.setAdUnitId("XXXXXXXXX");
rootLayout.addView(adView, 0);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("XXXXXXXXXX")
.build();
adView.loadAd(adRequest);
Below are my XML codes
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
.......
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal" >
<com.google.ads.AdView
android:id="@+id/ForViewAd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</RelativeLayout>
The logcat readings when running the app on the emulator are strange and confusing
09-28 15:28:21.076: E/Trace(968): error opening trace file: No such file or directory (2)
09-28 15:28:21.120: W/GooglePlayServicesUtil(968): Google Play services is missing.
09-28 15:28:21.140: I/Ads(968): Starting ad request.
09-28 15:28:21.140: I/Ads(968):
Use AdRequest.Builder.addTestDevice ("XXXXXXXXX") to get test ads on this device.
09-28 15:28:21.200: D/dalvikvm(968): DexOpt: --- BEGIN 'ads326198251.jar' (bootstrap=0) ---
09-28 15:28:21.216: D/dalvikvm(968): GC_CONCURRENT freed 155K, 3% free 10994K/11271K, paused 19ms+11ms, total 36ms
09-28 15:28:21.324: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
09-28 15:28:21.340: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
09-28 15:28:21.356: D/libEGL(968): loaded /system/lib/egl/libEGL_emulation.so
09-28 15:28:21.372: D/(968): HostConnection::get() New Host Connection established 0xb975ff68, tid 968
09-28 15:28:21.380: D/libEGL(968): loaded /system/lib/egl/libGLESv1_CM_emulation.so
09-28 15:28:21.380: D/libEGL(968): loaded /system/lib/egl/libGLESv2_emulation.so
09-28 15:28:21.432: W/EGL_emulation(968): eglSurfaceAttrib not implemented
09-28 15:28:21.448: D/OpenGLRenderer(968): Enabling debug mode 0
09-28 15:28:21.476: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb95468e0): name, size, mSize = 1, 1048576, 1048576
09-28 15:28:21.532: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb953e248): name, size, mSize = 2, 9216, 1057792
09-28 15:28:21.572: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb954fcb8): name, size, mSize = 4, 36864, 1094656
09-28 15:28:21.576: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb976f528): name, size, mSize = 5, 16384, 1111040
09-28 15:28:21.576: D/dalvikvm(968): DexOpt: --- END 'ads326198251.jar' (success) ---
09-28 15:28:21.576: D/dalvikvm(968): DEX prep '/data/data/com.example.testapp/cache/ads326198251.jar': unzip in 0ms, rewrite 375ms
09-28 15:28:21.704: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb954edf8): name, size, mSize = 8, 16384, 1127424
09-28 15:28:21.704: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb955e380): name, size, mSize = 9, 4096, 1131520
09-28 15:28:21.776: D/dalvikvm(968): GC_CONCURRENT freed 214K, 4% free 11181K/11527K, paused 14ms+1ms, total 22ms
09-28 15:28:21.780: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
09-28 15:28:21.788: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
09-28 15:28:22.040: W/Ads(968): Invalid unknown request error: [Cannot determine request type. Is your ad unit id correct?]
09-28 15:28:22.048: W/Ads(968): There was a problem getting an ad response. ErrorCode: 1
09-28 15:28:22.060: W/Ads(968): Failed to load ad: 1
09-28 15:38:01.600: D/dalvikvm(968): GC_CONCURRENT freed 398K, 5% free 11181K/11719K, paused 10ms+1ms, total 18ms
09-28 15:38:01.604: D/webviewglue(968): nativeDestroy view: 0xb97947e8
09-28 15:38:01.608: D/webviewglue(968): nativeDestroy view: 0xb97da500
As you can see, at least 3 errors are displayed from the logarithm. First, the google play services have been imported into the project. I can see this in the Android private libraries folder (but not in the libs folder).
There's also an error that says there isn't enough space, but I set the relativelayout of the right and left padding to 0sp. so there should be enough space in the width?
Finally, error code 1 or "Invalid unknown request error"? I do not understand this.
Apart from the logarithm and the fact that the ads are not showing anywhere in the action, the app ran fine, no problem.
Can someone please tell me what I did wrong?
Following is the logarithm after what was suggested
09-29 17:31:47.290: D/jdwp(1025): Got wake-up signal, bailing out of select
09-29 17:31:47.290: D/dalvikvm(1025): Debugger has detached; object registry had 1 entries
09-29 17:31:47.302: W/GooglePlayServicesUtil(968): Google Play services is missing.
09-29 17:31:47.302: I/AndroidRuntime(1025): NOTE: attach of thread 'Binder_3' failed
09-29 17:31:47.318: I/Ads(968): Starting ad request.
09-29 17:31:47.318: I/Ads(968): Use AdRequest.Builder.addTestDevice("XXXXXX") to get test ads on this device.
09-29 17:31:47.418: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
09-29 17:31:47.422: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
09-29 17:31:47.446: W/EGL_emulation(968): eglSurfaceAttrib not implemented
09-29 17:31:47.454: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb820e8e0): name, size, mSize = 38, 1048576, 1131520
09-29 17:31:47.526: I/ActivityManager(324): Displayed com.example.testapp/com.example.testapp.MainActivity: +249ms
09-29 17:31:47.530: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
09-29 17:31:47.530: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
09-29 17:31:47.606: W/Ads(968): Invalid unknown request error: [Cannot determine request type. Is your ad unit id correct?]
09-29 17:31:47.610: W/Ads(968): There was a problem getting an ad response. ErrorCode: 1
09-29 17:31:47.610: W/Ads(968): Failed to load ad: 1
09-29 17:31:47.622: D/dalvikvm(968): GC_CONCURRENT freed 256K, 4% free 11580K/11975K, paused 1ms+1ms, total 15ms
09-29 17:31:47.622: D/webviewglue(968): nativeDestroy view: 0xb85bfb60
source to share
there is a problem with smart_banner // Not enough space to show ads. 360x50 dp required
BANNER ads work great,
I solve this as ... remove ads from layout and put in root layout, remove edge of root layout
<RelativeLayout>
<LinearLayout>
</LinearLayout>
<layout>
</layout>
//here
<com.google.android.gms.ads.AdView />
</RelativeLayout>
source to share
You added the testdevice id incorrectly, I found your device id in your logs and updated the code.
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("5C2521D171291728A381823D5ACC9B8D")
.build();
adView.loadAd(adRequest);
Next, only one is enough in your layout file as your java code sets adunitid, testdeviceid and adsize. You can put it in java code or layout file.
<com.google.ads.AdView
android:id="@+id/ForViewAd"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Including the official google page for more information https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
source to share
Adding to @ Ranjith's answer, since you are using admob via google play services, you should change your layout like this:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
.......
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal" >
You can follow the official guide about migrating from old admob to new admob
By the way, do not post your correct adunit IDs on the internet in the future. I disguised it
source to share