简体   繁体   English

Admob广告出错(广告加载完成)

[英]Error in Admob Ad (Ad finished loading)

i am trying to put a interstitial ads in my game .. a interstitial ad appear after each Game over.. and the codes form other Developer and i have Switched the Admobs.jar library to play Services ads .. and when it game over the ads didn't appear ... and in the logcat it's say that the ads finished loading . 我试图在我的游戏中放置一个插页式广告..每个游戏结束后出现一个插页式广告..并且代码由其他开发人员提供,并且我已经切换了Admobs.jar库以播放服务广告..广告没有出现...并且在日志中说广告已完成加载。

3-18 21:14:50.226 32551-32551/com.mogames.beachguard E/MediaPlayer: Should have subtitle controller already set
03-18 21:14:51.581 32551-32551/com.mogames.beachguard E/MediaPlayer: Should have subtitle controller already set
03-18 21:14:59.966 32551-32551/com.mogames.beachguard E/MediaPlayer: Should have subtitle controller already set
03-18 21:15:07.791 32551-32551/com.mogames.beachguard I/dalvikvm: Could not find method android.security.NetworkSecurityPolicy.getInstance, referenced from method com.google.android.gms.ads.internal.state.f.a
03-18 21:15:07.996 32551-32551/com.mogames.beachguard I/dalvikvm: Could not find method android.security.NetworkSecurityPolicy.getInstance, referenced from method com.google.android.gms.ads.internal.state.f.a
03-18 21:15:08.346 32551-32551/com.mogames.beachguard I/Ads: Starting ad request.
03-18 21:15:08.366 32551-32551/com.mogames.beachguard W/Ads: The interstitial has not loaded.
03-18 21:15:09.471 32551-32551/com.mogames.beachguard I/dalvikvm: Could not find method android.webkit.WebSettings.setMixedContentMode, referenced from method com.google.android.gms.ads.internal.webview.o.<init>
03-18 21:15:09.496 32551-32551/com.mogames.beachguard I/chromium: [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
03-18 21:15:09.501 32551-32551/com.mogames.beachguard I/chromium: [INFO:url_util.cc(429)] AddStandardScheme is not supported
03-18 21:15:09.501 32551-32551/com.mogames.beachguard I/chromium: [INFO:url_util.cc(429)] AddStandardScheme is not supported
03-18 21:15:09.501 32551-32551/com.mogames.beachguard I/chromium: [INFO:url_util.cc(429)] AddStandardScheme is not supported
03-18 21:15:09.501 32551-32551/com.mogames.beachguard I/chromium: [INFO:url_util.cc(429)] AddStandardScheme is not supported
03-18 21:15:11.161 32551-32551/com.mogames.beachguard I/Ads: Ad finished loading.

and my Java Code is 我的Java代码是

package com.mogames.beachguard;    
public class MainGame extends Screen {



    //ad
    private com.google.android.gms.ads.InterstitialAd interstitial;
    int ad_counter = 0;

    //game over counter
    int gameover_counter = 0;
    boolean game_over = false;

    //TODO: variables you can change to control game speed, delays...
    int gameover_delay = 20;
    int sand_height = 50;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        //setDebugMode(true);
        //initialiseAccelerometer();

        //highscores
        highscoreManager = new HighScoreManager(this, savedInstanceState, layout);

        // Create the interstitial
        interstitial = new com.google.android.gms.ads.InterstitialAd(this );
        interstitial.setAdUnitId(getResources().getString(R.string.InterstitialAd_unit_id));

    }
    com.google.android.gms.ads.AdRequest adRequest;

    public void openAd() {
        runOnUiThread(new Runnable() {
            public void run() {
                // Create ad request
                adRequest = new com.google.android.gms.ads.AdRequest.Builder()
                        .addTestDevice(com.google.android.gms.ads.AdRequest.DEVICE_ID_EMULATOR)
//                      .addTestDevice("C7929CF76D7E393618FEA6C0F97D941F")
                        .addTestDevice("3063E9F211291FEBEC7210C5CD24D4C4")
                        .build();
                // Begin loading your interstitial
                interstitial.loadAd(adRequest);


                // Set Ad Listener to use the callbacks below
                interstitial.setAdListener(new com.google.android.gms.ads.AdListener() {
                                               @Override
                                               public void onAdClosed() {

                                               }
                                           }
                );


                interstitial.show();
            }
        });
    }

    public synchronized void GameOver() {
        if (ad_counter >= getResources().getInteger(R.integer.add_shows_every_X_gameovers)) {
            openAd();//TODO: Remove openAd(); to stop interstatial ads.

            ad_counter = 0;
        }
        ad_counter++;
        StopMusic();
        state = GAMEOVER;
        highscoreManager.AddName_Editview(((int) (ScreenWidth() / 1.5f) < dpToPx(250)) ? ((int) (ScreenWidth() / 1.5f)) : (dpToPx(250)), getResources().getString(R.string.Default_topscore_name), (int) (ScreenHeight() * 0.68f));
    }

    public void OpenHighscores() {
        state = HIGHSCORES;
        highscore_list = highscoreManager.load_localscores();
    }

    public void createBubble(float y) {
        if (Math.random() > 0.5)
            bubbles.add(new Instance(bubble_sprite, (float) ((Math.random() * ScreenWidth()) - (bubble_sprite.getWidth() / 2)), y, this, false));
        else
            bubbles.add(new Instance(bubble_sprite2, (float) ((Math.random() * ScreenWidth()) - (bubble_sprite2.getWidth() / 2)), y, this, false));
    }

    public void PlayMusic() {
        if (!music_muted && state == GAMEPLAY) {
            music = MediaPlayer.create(activity, R.raw.music);
            music.setVolume(0.4f, 0.4f);
            music.start();
            music.setLooping(true);
        }
    }

    public void StopMusic() {
        if (music != null)
            music.stop();
    }

    public void toggleMusic() {
        if (music_muted) {

            music_muted = false;
            btn_music_mute.sprite = music_on;
            if (!pause) {
                PlayMusic();
            }
        } else {
            music_muted = true;
            btn_music_mute.sprite = music_off;
            StopMusic();
        }
    }

    public void toggleSoundFx() {
        if (sound_muted) {
            sound_muted = false;
            btn_sound_mute.sprite = sound_on;
        } else {
            sound_muted = true;
            btn_sound_mute.sprite = sound_off;
        }
    }

    public void pause() {
        if (state == GAMEPLAY) {
            pause = true;
            StopMusic();
            btn_pause.sprite = play_btn_sprite;
        }
    }

    public void unPause() {
        pause = false;
        btn_pause.sprite = pause_btn_sprite;
        if (!music_muted)
            PlayMusic();

    }

    public void togglePause() {
        if (state == GAMEPLAY) {
            if (pause)
                unPause();
            else
                pause();

        }
    }

    public void Rate() {
        Uri uri = Uri.parse("market://details?id=" + getPackageName());
        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
        try {
            startActivity(goToMarket);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, getResources().getString(R.string.unable_to_reach_market), Toast.LENGTH_LONG).show();
        }
    }

    //...................................................Rendering of screen............................................................................................................................
    @Override
    public void Draw(Canvas canvas) {
        //draw background
        renderBackground(canvas);

        if (state == MENU) {
            //draw bubbles
            bubble_sprite2.draw(canvas, dpToPx(15), dpToPx(50));
            bubble_sprite.draw(canvas, ScreenWidth() - (bubble_sprite.getWidth()), -(bubble_sprite.getHeight() * 0.3f));
            //draw sand
            drawSand(canvas);
            //draw buttons
            btn_Highscores.draw(canvas);
            btn_Exit.draw(canvas);
            btn_Play.draw(canvas);
            btn_rate.draw(canvas);
            //draw grass and bottle
            grass_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            bottle_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - bottle_sprite.getHeight() - dpToPx(sand_height) * 0.6f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.4f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.6f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.3f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.8f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.2f);

            canvas.drawText(getResources().getString(R.string.app_name), (ScreenWidth() / 2) - (Title_Paint.measureText(getResources().getString(R.string.app_name)) / 2), (float) (ScreenHeight() * 0.25), Title_Paint);

        } else if (state == GAMEPLAY) {
            //draw bubbles
            for (int i = 0; i < bubbles.size(); i++) {
                bubbles.get(i).draw(canvas);
            }
            //draw sand
            drawSand(canvas);

            //draw beach sign
            beach_sprite.draw(canvas, beach_sprite.getWidth() * 0.2f, ScreenHeight() - beach_sprite.getHeight() - dpToPx(sand_height) * 0.6f);
            //draw grass and bottle
            grass_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            bottle_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - bottle_sprite.getHeight() - dpToPx(sand_height) * 0.6f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.4f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.6f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.3f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.8f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.2f);
            fishManager.drawObjects(canvas);

            //draw score
            canvas.drawText("" + score, (ScreenWidth() * 0.5f) - (Title_Paint.measureText("" + score) / 2), (float) (ScreenHeight() * 0.35f), Score_Paint);

            //before game starts
            if (notstarted) {
                canvas.drawText(getResources().getString(R.string.Tap_to_start), (ScreenWidth() / 2) - (Instruction_Paint.measureText(getResources().getString(R.string.Tap_to_start)) / 2), (float) (ScreenHeight() * 0.5), Instruction_Paint);
                canvas.drawText(getResources().getString(R.string.Tap_to_start2), (ScreenWidth() / 2) - (Instruction_Paint.measureText(getResources().getString(R.string.Tap_to_start2)) / 2), (float) (ScreenHeight() * 0.6), Instruction_Paint);

            } else if (pause) {
                canvas.drawText(getResources().getString(R.string.Paused), (ScreenWidth() / 2) - (Instruction_Paint.measureText(getResources().getString(R.string.Paused)) / 2), (float) (ScreenHeight() * 0.5), Instruction_Paint);
            }

            //pause button
            btn_pause.draw(canvas);

        } else if (state == HIGHSCORES) {
            //draw bubbles
            bubble_sprite2.draw(canvas, dpToPx(15), dpToPx(50));
            bubble_sprite.draw(canvas, ScreenWidth() - (bubble_sprite.getWidth()), -(bubble_sprite.getHeight() * 0.3f));
            //draw sand
            drawSand(canvas);
            //draw buttons
            btn_Home.draw(canvas);
            //draw grass and bottle
            grass_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            bottle_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - bottle_sprite.getHeight() - dpToPx(sand_height) * 0.6f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.4f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.6f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.3f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.8f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.2f);

            canvas.drawText(getResources().getString(R.string.Highscores), (ScreenWidth() / 2) - (Title_Paint.measureText(getResources().getString(R.string.Highscores)) / 2), (float) (ScreenHeight() * 0.25), Title_Paint);

            if (highscore_list != null) {
                //hiscores
                for (int i = 0; i < highscore_list.length; i++) {
                    canvas.drawText(highscore_list[i].hiscorename, (ScreenWidth() / 2) - (ScreenWidth() / 4), (ScreenHeight() * 0.35f) + (i * SubTitle_Paint.getTextSize() * 1.5f), SubTitle_Paint);
                    canvas.drawText("" + highscore_list[i].highscore, (ScreenWidth() / 2) + (ScreenWidth() / 6), (ScreenHeight() * 0.35f) + (i * SubTitle_Paint.getTextSize() * 1.5f), SubTitle_Paint);
                }
            }

        } else if (state == GAMEOVER) {
            //draw bubbles
            bubble_sprite2.draw(canvas, dpToPx(15), dpToPx(50));
            bubble_sprite.draw(canvas, ScreenWidth() - (bubble_sprite.getWidth()), -(bubble_sprite.getHeight() * 0.3f));

            //draw sand
            drawSand(canvas);
            //draw buttons
            btn_facebook.draw(canvas);
            btn_Home.draw(canvas);
            btn_Replay.draw(canvas);
            //draw grass and bottle
            grass_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            bottle_sprite.draw(canvas, ScreenWidth() * 0.1f, ScreenHeight() - bottle_sprite.getHeight() - dpToPx(sand_height) * 0.6f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.4f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.5f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.6f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.3f);
            grass_sprite.draw(canvas, ScreenWidth() * 0.8f, ScreenHeight() - grass_sprite.getHeight() - dpToPx(sand_height) * 0.2f);

            //draw text
            canvas.drawText(getResources().getString(R.string.game_over), (ScreenWidth() / 2) - (Title_Paint.measureText(getResources().getString(R.string.game_over)) / 2), (float) (ScreenHeight() * 0.25), Title_Paint);
            canvas.drawText("" + score, (ScreenWidth() / 2) - (Score_Paint.measureText("" + score) / 2), (float) (ScreenHeight() * 0.45), Score_Paint);
            canvas.drawText(getResources().getString(R.string.Enter_highscore_comment), (ScreenWidth() / 2) - (SubTitle_Paint.measureText(getResources().getString(R.string.Enter_highscore_comment)) / 2), (float) (ScreenHeight() * 0.65), SubTitle_Paint);

        }
        //draw sound buttons
        btn_sound_mute.draw(canvas);
        btn_music_mute.draw(canvas);

        //physics.drawDebug(canvas);
        super.Draw(canvas);
    }

    //Rendering of background
    public void renderBackground(Canvas canvas) {

        //TODO: you may wish to change background colors from here
        //canvas.drawRect(0, 0, ScreenWidth(), ScreenHeight(), background_shader);
        canvas.drawColor(Color.rgb(38, 148, 191));

    }

    public void drawSand(Canvas canvas) {
        Path sand_path = new Path();
        sand_path.reset(); // only needed when reusing this path for a new build
        sand_path.moveTo(0, ScreenHeight() - dpToPx(sand_height)); // used for first point
        sand_path.lineTo(ScreenWidth(), ScreenHeight() - dpToPx(sand_height) * 0.7f);
        sand_path.lineTo(ScreenWidth(), ScreenHeight());
        sand_path.lineTo(0, ScreenHeight());
        canvas.drawPath(sand_path, Sand_shader);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        highscoreManager.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onResume() {
        super.onResume();
        highscoreManager.onResume();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        highscoreManager.onSaveInstanceState(outState);
    }

    @Override
    public void onPause() {
        super.onPause();
        pause();
        highscoreManager.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        highscoreManager.onDestroy();
    }
}

and the gardle 和漱口水

dependencies {
    compile project(':facebookSDK')
    compile project(':facebookSDK')
    compile 'com.google.firebase:firebase-ads:10.2.0'
    compile 'com.google.firebase:firebase-core:10.2.0'
    compile 'com.google.android.gms:play-services-ads:10.2.0'

}
apply plugin: 'com.google.gms.google-services'

project gardle 项目集

dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath 'com.google.gms:google-services:3.0.0'

    }

and there is no main Xml layout for the game 而且游戏没有主要的Xml布局

You show the ad right after loading it. 您在加载广告后立即显示广告。 It is highly recommended to call #loadAd() as early as possible (for example, in the onCreate method of your Activity) to allow ads to be preloaded. 强烈建议您尽早调用#loadAd() (例如,在“活动”的onCreate方法中)以允许广告预加载。

Load the ad in your onCreate method: 将广告加载到您的onCreate方法中:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        //setDebugMode(true);
        //initialiseAccelerometer();

        //highscores
        highscoreManager = new HighScoreManager(this, savedInstanceState, layout);

        // Create the interstitial
        interstitial = new com.google.android.gms.ads.InterstitialAd(this );
        interstitial.setAdUnitId(getResources().getString(R.string.InterstitialAd_unit_id));

// Create ad request
                adRequest = new com.google.android.gms.ads.AdRequest.Builder()
                        .addTestDevice(com.google.android.gms.ads.AdRequest.DEVICE_ID_EMULATOR)
//                      .addTestDevice("C7929CF76D7E393618FEA6C0F97D941F")
                        .addTestDevice("3063E9F211291FEBEC7210C5CD24D4C4")
                        .build();
                // Begin loading your interstitial
                interstitial.loadAd(adRequest);


                // Set Ad Listener to use the callbacks below
                interstitial.setAdListener(new com.google.android.gms.ads.AdListener() {
                                               @Override
                                               public void onAdClosed() {

                                               }
                                           }
                );

    }

And in your #openAd() method, show the ad: 然后在您的#openAd()方法中,显示广告:

public void openAd() {
        runOnUiThread(new Runnable() {
            public void run() {
               if (interstitial.isLoaded())
                interstitial.show();
            }
        });
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM