簡體   English   中英

android - 點擊時顯示的插頁式廣告

[英]android - interstitial ad showing on click

在我的新游戲中,我想展示插頁式廣告。 單擊按鈕,游戲會重新啟動,我希望廣告僅每 15 次出現一次。 問題是每次游戲開始時都會顯示它。 錯在哪里?

public class MainActivity extends AppCompatActivity {
 
    InterstitialAd mInterstitialAd;
    public int playcount = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        mInterstitialAd = new InterstitialAd(this);

        // set the ad unit ID
        mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));

        AdRequest adRequest = new AdRequest.Builder()
            .build();

        // Load ads into Interstitial Ads
        mInterstitialAd.loadAd(adRequest);
        TextView playctv = (TextView) findViewById(R.id.textView);

        SharedPreferences prefsplay = this.getSharedPreferences("myPrefsKey",
            Context.MODE_PRIVATE);
        playcount = prefsplay.getInt("play_number", 0);
        playctv.setText(String.valueOf(playcount));
    }

    public void restart(View view) {
        Intent intent = new Intent(this, GameScreen.class);
        startActivity(intent);
        playcount++;

        SharedPreferences prefsplay = this
            .getSharedPreferences("myPrefsKey",
                    Context.MODE_PRIVATE);
        prefsplay.edit().putInt("play_number", playcount)
            .apply();
    }

    private void showInterstitial() {
        if (mInterstitialAd.isLoaded())
            mInterstitialAd.show();
    }

    private void adView() {
        mAdView = (AdView) findViewById(R.id.adView);
        MobileAds.initialize(getApplicationContext(), getResources().getString(R.string.interstitial_full_screen));
        final AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }

    public void gameover() { 
        if (playcount == 10) {
            playcount = 0;
            mInterstitialAd.setAdListener(new AdListener() {
                public void onAdLoaded() {
                    mInterstitialAd.show();    //We are executing this code only if ad is loaded, no need to check it again

                    SharedPreferences prefsplay = getApplicationContext()
                        .getSharedPreferences("myPrefsKey",
                                Context.MODE_PRIVATE);
                    prefsplay.edit().putInt("play_number", playcount)
                        .apply();

                    AdRequest adRequest = new AdRequest.Builder()
                        .build();
                }
            });
        }
    }
}

活動_主要:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    android:id="@+id/rect" >

<ImageView
    android:id="@+id/imageview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"   
    android:scaleType="center" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imageview1"
    android:layout_alignTop="@+id/imageview1"
    android:alpha="0.7"
    android:gravity="center"
    android:text="Score"
    android:textSize="15sp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView2"
    android:alpha="0.9"
    android:gravity="center"
    android:text="sco"
    android:textSize="25sp" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:text="0:500"
    android:textSize="25sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:alpha="0.7"
    android:layout_alignTop="@+id/textView2"
    android:text="Highscore"
    android:textSize="15sp" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView3"
    android:layout_alignRight="@+id/textView4"
    android:text="Hs"
    android:textSize="25sp" />



    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        ads:adSize="SMART_BANNER"               ads:adUnitId="@string/banner_home_footer"
        android:layout_width="wrap_content"     android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
    </com.google.android.gms.ads.AdView>

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_default"
        android:onClick="restart"
        android:src="@android:drawable/ic_menu_revert"

        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView3"
        android:layout_alignLeft="@+id/imageButton1"
        android:layout_alignStart="@+id/imageButton1"
        android:id="@+id/textView" />


</RelativeLayout>

顯現:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx"
    android:versionCode="2"
    android:versionName="1.1" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="23" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/logoone"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <activity
            android:name=".MainActivity"
            android:screenOrientation="sensorPortrait"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".GameScreen"
            android:screenOrientation="sensorPortrait"
            android:label="@string/app_name" />

        <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:theme="@android:style/Theme.Translucent" />

    </application>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


</manifest>

您的代碼需要大量修復。 我在這里一一貼。

  • restart函數應該使用startActivityForResult

     private final int ACTION_GAME = 100; public void restart(View view) { Intent intent = new Intent(this, GameScreen.class); startActivityForResult(intent, ACTION_GAME); playcount++; SharedPreferences prefsplay = this .getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); prefsplay.edit().putInt("play_number", playcount).apply(); }
  • 當您為結果啟動GameScreen活動時,您需要覆蓋onActivityResult

     @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case ACTION_GAME: gameover(); break; default: break; } }
  • 現在,在gameover功能,你需要在你的偏愛,檢查保存的值playcount

     public void gameover() { // Get the saved value SharedPreferences prefsplay = this .getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); playcount = prefsplay.getInt("play_number", 0); if (playcount >= 10) { playcount = 0; showInterstitial(); SharedPreferences prefsplay = getApplicationContext() .getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); prefsplay.edit().putInt("play_number", playcount).apply(); // Start loading the new ad loadNewAd(); } }
  • 我已經引入了loadNewAd()函數,它看起來像這樣

    private void loadNewAd() { final AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); }
  • onCreate函數需要這樣修改

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); mInterstitialAd = new InterstitialAd(this); // set the ad unit ID mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); // Call adView here adView(); TextView playctv = (TextView) findViewById(R.id.textView); SharedPreferences prefsplay = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); playcount = prefsplay.getInt("play_number", 0); playctv.setText(String.valueOf(playcount)); }
  • 最后,當您使用startActivityForResult您需要在完成GameScreen活動時設置結果。 因此,當您完成或從GameScreen活動返回時,您需要執行此操作。

     GameScreen.setResult(Activity.RESULT_OK); GameScreen.finish();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM