My issue is that ads are not being displayed at all in my app, test mode or not. I am going to keep this question specific to test mode, and once I get that working I will worry about live ads.
Development Information
I am using Eclipse for development.
I have setup ads using Google Play Services and Admob in my Android app, as described in the online documentation provided by Google.
I have added my device ID using addTestDevice("xxxxxxxxxxxxxxxx"), and have checked the hashed device ID a number of times to be sure it is correct.
The Issue (see below for log info)
When I run the application on my device, no ads are displayed at all. This happens even when I have added my device as a test device.
I have searched high and low, and turned up many similar issues, but am yet to find an answer to this specific problem.
LogCat Output
10-28 13:56:41.659: I/Ads(1704): Starting ad request. 10-28 13:56:42.187: I/Ads(1704): No fill from ad server. 10-28 13:56:42.187: W/Ads(1704): Failed to load ad: 3 10-28 13:56:42.199: W/Ads(1704): No GMSG handler found for GMSG: gmsg://mobileads.google.com/jsLoaded?google.afma.Notify_dt=1414504602197
My Activity
package bb.hoppingbird; import org.cocos2d.layers.CCScene; import org.cocos2d.nodes.CCDirector; import org.cocos2d.opengl.CCGLSurfaceView; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.InterstitialAd; import android.app.Activity; import android.content.SharedPreferences; import android.media.MediaPlayer; import android.os.Bundle; import android.support.v4.view.ViewPager.LayoutParams; import android.util.DisplayMetrics; import android.view.KeyEvent; import android.widget.RelativeLayout; import android.widget.Toast; public class MainActivity extends Activity { private CCGLSurfaceView mGLSurfaceView; // private static final String AD_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx"; private static final String AD_INTERSTITIAL_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx"; /** The Admob ad. */ private InterstitialAd interstitialAd = null; public AdView adView = null; public static MainActivity app; public void onCreate(Bundle savedInstanceState) { app = this; super.onCreate(savedInstanceState); // set view mGLSurfaceView = new CCGLSurfaceView(this); //Ads ---------------- // Create the adView RelativeLayout layout = new RelativeLayout(this); layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); // adView = new AdView(this); adView.setAdSize(AdSize.SMART_BANNER); adView.setAdUnitId(AD_UNIT_ID); // Add the adView to it RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); adView.setLayoutParams(params); layout.addView(mGLSurfaceView); layout.addView(adView); setContentView(layout); //New AdRequest AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .addTestDevice("0D47C6944503F0284666D16BB79BF684") .build(); // Start loading the ad in the background. adView.loadAd(adRequest); //-----------------------------------------------------Interstitial Add // Create an Interstitial ad. interstitialAd = new InterstitialAd(this); interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID); interstitialAd.setAdListener(new AdListener() { @Override public void onAdLoaded() { interstitialAd.show(); } @Override public void onAdFailedToLoad(int errorCode) { Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show(); } }); // Load the interstitial ad. //showInterstitialAds(); //---------------------- // set director CCDirector director = CCDirector.sharedDirector(); director.attachInView(mGLSurfaceView); director.setAnimationInterval(1/60); // get display info DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); G.display_w = displayMetrics.widthPixels; G.display_h = displayMetrics.heightPixels; G.scale = Math.max(G.display_w/1280.0f, G.display_h/800.0f); G.width = G.display_w / G.scale; G.height = G.display_h / G.scale; // get data SharedPreferences sp = CCDirector.sharedDirector().getActivity().getSharedPreferences("GameInfo", 0); G.music = sp.getBoolean("music", true); G.sound = sp.getBoolean("sound", true); // create sound G.soundMenu = MediaPlayer.create(this, R.raw.menu); G.soundMenu.setLooping(true); G.soundGame = MediaPlayer.create(this, R.raw.game); G.soundGame.setLooping(true); G.soundCollide = MediaPlayer.create(this, R.raw.collide); G.soundJump = MediaPlayer.create(this, R.raw.jump); G.soundLongJump = MediaPlayer.create(this, R.raw.long_jump); G.soundSpeedDown = MediaPlayer.create(this, R.raw.speed_down); G.soundSpeedUp = MediaPlayer.create(this, R.raw.speed_up); G.soundDirection = MediaPlayer.create(this, R.raw.direction_sign); G.soundClick = MediaPlayer.create(this, R.raw.menu_click); G.soundCollect = MediaPlayer.create(this, R.raw.collect); G.bgSound = G.soundMenu; // show menu CCScene scene = CCScene.node(); scene.addChild(new MenuLayer(true)); director.runWithScene(scene); } @Override public void onPause() { if (adView != null) { adView.pause(); } super.onPause(); G.bgSound.pause(); CCDirector.sharedDirector().onPause(); } @Override public void onResume() { super.onResume(); if (adView != null) { adView.resume(); } if( G.music ) G.bgSound.start(); CCDirector.sharedDirector().onResume(); } @Override public void onDestroy() { // Destroy the AdView. if (adView != null) { adView.destroy(); } super.onDestroy(); G.bgSound.pause(); CCDirector.sharedDirector().end(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if( keyCode == KeyEvent.KEYCODE_BACK ) { CCDirector.sharedDirector().onKeyDown(event); return true; } return super.onKeyDown(keyCode, event); } public void showInterstitialAds() { runOnUiThread(new Runnable() { public void run() { AdRequest interstitialAdRequest = new AdRequest.Builder().build(); interstitialAd.loadAd(interstitialAdRequest); } }); } }