AdMob广告在Android应用程序中加载需要时间

时间:2016-05-05 17:32:51

标签: java android eclipse admob ads

我被困了几个小时。我已经在我的应用程序中集成了admob广告,并且当用户在编辑文本中写东西时我添加了它,但是有时需要花费一些时间来加载广告,而有些时候会跳过。所以用户键入文本并转到下一个活动而我的广告没有及时加载。 你能给我一些解决方案来解决这个问题吗?

提前致谢

PassValues.java

package com.logixcess.wordguessing;

import android.content.Context;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Button;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

import java.security.PrivateKey;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by ert on 17/04/2016.
 */
public class Passvalues {
    public static String[] words , toCompare;
    public static int score = 0,staticScore = 0,prevScore = 0,correctCount = 0;
    public static String selectedWord;
    public static List<String> repeated = null;
    public static List<Button> buttonList = new ArrayList<Button>();
    public static int[] hiscore = new int[5];
    public static String[] hiscorename = new String[5];
    public static MediaPlayer mediaPlayer;//sounds
    public static MediaPlayer tones;//music
    static float volLeft = 70,volRight = 70;
    public static boolean sound = true,music=true;
    public static boolean adCheck = false;
    public static InterstitialAd interstitial;
    public Passvalues()
    {

        words=null ; toCompare=null;
        score = 0;prevScore = 0;correctCount = 0;
        selectedWord="";
        repeated = null;
        buttonList = new ArrayList<Button>();
        hiscore = new int[5];
        hiscorename = new String[5];
        adCheck = false;

    }

    public static void playMusic(Context context,int id)
    {
        if(Passvalues.music)
        {
            if(tones != null)
            {
                if (!tones.isPlaying()) {
                    tones = MediaPlayer.create(context, id);
                    tones.setLooping(true);
                    tones.start();
                }
            }
            else {

                tones = MediaPlayer.create(context, id);
                tones.setLooping(true);
                tones.start();
            }

        }
    }
    public static void stopMusic(){
       /* if(!Passvalues.sound) {
            if(tones != null)
            {
                if(tones.isPlaying()) {
                    stopPlaying(tones);
                }
            }
            else
            {
                tones = null;
                stopPlaying(tones);
            }
        }*/

        if((!Passvalues.music)&&(!Passvalues.sound))
        {
            if(tones!=null)
            {
                stopPlaying(tones);
                tones=null;
            }
            else
            {
                //pehlay se hi band hai music
            }
            if(mediaPlayer!=null)
            {

                stopPlaying(mediaPlayer);
                mediaPlayer=null;
            }
            else
            {

                //peh;ay se hi sound band hai
            }

        }
    }
    public static void playSound(Context context,int id){
        if(Passvalues.sound)
        {
            mediaPlayer = MediaPlayer.create(context, id);
            mediaPlayer.start();
        }
        else if(mediaPlayer != null)
        {
            if(mediaPlayer.isPlaying()) {
                stopPlaying(mediaPlayer);

            }
            if(mediaPlayer != null)
                stopPlaying(mediaPlayer);
        }

    }

    public static void stopPlaying(MediaPlayer mp)
    {

        if(mp!=null)
        {
            mp.stop();
            mp.release();
            mp=null;

        }

    }

    public static boolean showad(Context context)
    {
        if(isNetworkAvailable(context))
        {
            if(interstitial == null)
                interstitial = new InterstitialAd(context);
            interstitial.setAdUnitId("ca-app-pub-7328520387956873/2174089947");
            AdRequest adRequest = new AdRequest.Builder()
                    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                    .build();
            interstitial.loadAd(adRequest);
            return true;

        }
        return false;
    }


    private static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();


        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

}

EnterHighScore.java 这是广告的活动

package com.logixcess.wordguessing;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.logixcess.wordguessing.R;

import android.app.Activity;
import android.app.DialogFragment;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager.WakeLock;
import android.preference.PreferenceManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import com.google.android.gms.ads.AdListener;

public class EnterHiscore extends Activity {

    int score;
    EditText namebox;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {

        onBackPressed();
        super.onKeyDown(keyCode, event);
        return true;
    }


    @Override
    public void onBackPressed() {
        Intent setIntent = new Intent(EnterHiscore.this,MainScreen.class);
        //setIntent.addCategory(Intent.CATEGORY_HOME);
        //setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(setIntent);
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //set screen full screen and no title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.enterhiscore);
        Passvalues.showad(EnterHiscore.this);
        View backgroundImage = findViewById(R.id.bak);
        Drawable background = backgroundImage.getBackground();
        background.setAlpha(90);
        //get score

        score = Passvalues.staticScore; //getIntent().getIntExtra("score", 0);

        //declare views
        namebox = (EditText) findViewById(R.id.namebox);
        Button save = (Button) findViewById(R.id.save);



    namebox.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!Passvalues.adCheck) {
                Passvalues.interstitial.setAdListener(new AdListener() {
                    @Override
                    public void onAdLoaded() {
                        super.onAdLoaded();
                        if (Passvalues.interstitial.isLoaded()) {
                            Passvalues.interstitial.show();
                        }
                    }

                    @Override
                    public void onAdClosed() {
                        //finish();
                        Passvalues.interstitial = null;
                    }
                });
                Passvalues.adCheck = true;
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
        save.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                process_highscore(score, namebox.getText().toString());

            }
        });

    }






    public void loadscore() {
        // load preferences
        SharedPreferences hiscores = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        for (int i = 0; i < 5; i++) {
            Passvalues.hiscore[i] = hiscores.getInt("score" + i, 0);
            Passvalues.hiscorename[i] = hiscores.getString("name" + i, "---");
        }

    }

    public void savescore() {
        //load preferences
        SharedPreferences hiscores = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor hiscores_editor = hiscores.edit();
        for (int i = 0; i < 5; i++) {
            hiscores_editor.putInt("score" + i, Passvalues.hiscore[i]);
            hiscores_editor.putString("name" + i, Passvalues.hiscorename[i]);
        }
        hiscores_editor.commit();
        loadscore();
    }

    public void process_highscore(int score, String name){
        System.out.println("ll"+score + name);
        loadscore();
        boolean ready = false;
        if (score > Passvalues.hiscore[0]) {

            Passvalues.hiscore[4] = Passvalues.hiscore[3];
            Passvalues.hiscorename[4] = Passvalues.hiscorename[3];
            Passvalues.hiscore[3] = Passvalues.hiscore[2];
            Passvalues.hiscorename[3] = Passvalues.hiscorename[2];
            Passvalues.hiscore[2] = Passvalues.hiscore[1];
            Passvalues.hiscorename[2] = Passvalues.hiscorename[1];
            Passvalues.hiscore[1] = Passvalues.hiscore[0];
            Passvalues.hiscorename[1] = Passvalues.hiscorename[0];


            Passvalues.hiscore[0] = score;
            Passvalues.hiscorename[0] = name;
            ready = true;
        }

        if (score > Passvalues.hiscore[1] && score <= Passvalues.hiscore[0] && !ready) {

            Passvalues.hiscore[4] = Passvalues.hiscore[3];
            Passvalues.hiscorename[4] = Passvalues.hiscorename[3];
            Passvalues.hiscore[3] = Passvalues.hiscore[2];
            Passvalues.hiscorename[3] = Passvalues.hiscorename[2];
            Passvalues.hiscore[2] = Passvalues.hiscore[1];
            Passvalues.hiscorename[2] = Passvalues.hiscorename[1];

            Passvalues.hiscore[1] = score;
            Passvalues.hiscorename[1] = name;
            ready = true;
        }
        if (score > Passvalues.hiscore[2] && score <= Passvalues.hiscore[1] && !ready) {

            Passvalues.hiscore[4] = Passvalues.hiscore[3];
            Passvalues.hiscorename[4] = Passvalues.hiscorename[3];
            Passvalues.hiscore[3] = Passvalues.hiscore[2];
            Passvalues.hiscorename[3] = Passvalues.hiscorename[2];

            Passvalues.hiscore[2] = score;
            Passvalues.hiscorename[2] = name;
            ready = true;
        }

        if (score > Passvalues.hiscore[4] && score <= Passvalues.hiscore[3] && !ready) {

            Passvalues.hiscore[4] = score;
            Passvalues.hiscorename[4] = name;
        }

        savescore();
        Intent i=new Intent(EnterHiscore.this,Highscore.class);
        startActivity(i);
        //go back to hiscores
        finish();
    }






}

1 个答案:

答案 0 :(得分:0)

不是在#onAdLoaded()回调中展示广告,而是在#onTextChanged()的自然断点中显示广告:

@Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!Passvalues.adCheck) {
               if (Passvalues.interstitial.isLoaded()) {
                   Passvalues.interstitial.show();
                 }
                Passvalues.interstitial.setAdListener(new AdListener() {
                    @Override
                    public void onAdLoaded() {
                        super.onAdLoaded();
                    }

                    @Override
                    public void onAdClosed() {
                        //finish();
                        Passvalues.interstitial = null;
                    }
                });
                Passvalues.adCheck = true;
            }
        }