2

我在我的 android 应用程序中使用 Admob SMART_BANNER。该应用程序在设备处于纵向模式时显示。但如果设备方向处于横向模式,则添加不会显示。我知道如果没有足够的空间来显示添加,则不会显示横幅添加。但就我而言,它似乎有足够的空间来显示添加。这是我的代码:

activity_main.xml 文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="15dp"/>

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


</RelativeLayout>

值文件夹中的 strings.xml 文件:

<resources>
    <string name="app_name">Banner Example</string>

    <string name="banner_ad_unit_id">ca-app-pub-3940256099942544/6300978111</string>

</resources>

Java代码:

TelephonyManager tManager = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
       String uid = tManager.getDeviceId();

        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder`enter code here`()
                .addTestDevice(uid)
                .build();
        mAdView.loadAd(adRequest);
4

3 回答 3

1

这可能不适用于原始问题,但我想分享我对SMART_BANNER不起作用的情况的解决方案。

我发现在我的情况下,SMART_BANNER 想要占据屏幕的整个宽度,无论方向如何 - 横向或纵向。我把 AdView 放在底部。如果它在占据屏幕宽度 80% 的列中,它既不会显示也不会抱怨(即不会调用 onAdFailedToLoad)。它只是隐藏。一旦它占据了整个宽度,广告就会毫无问题地显示。

于 2017-10-20T11:43:56.940 回答
0

您可以根据设备的屏幕分辨率动态加载 adsize:

 AdSize adSize = AdSize.SMART_BANNER;  

    DisplayMetrics dm = getResources().getDisplayMetrics();  
    double density = dm.density * 160;
    double x = Math.pow(dm.widthPixels / density, 2);
    double y = Math.pow(dm.heightPixels / density, 2);
    double screenInches = Math.sqrt(x + y);   
    if (screenInches > 8) { // > 728 X 90
        adSize = AdSize.LEADERBOARD;
    } else if (screenInches > 6) { // > 468 X 60
        adSize = AdSize.MEDIUM_RECTANGLE;
    } else { // > 320 X 50
        adSize = AdSize.BANNER;
    }

   AdView mAdView = (AdView) findViewById(R.id.adView);
     mAdView.setAdUnitId(yourAdUnitHere); 
     mAdView.setAdSize(adSize);
    AdRequest adRequest = new AdRequest.Builder().build();
     mAdView.loadAd(adRequest);
于 2015-08-13T22:33:44.443 回答
0
try this below code

private void showBannerAd()
{
    AdView adView = new AdView(HomeActivity.this);
    //cal method to show banner add

    if(getResources().getConfiguration().orientation == 
    Configuration.ORIENTATION_LANDSCAPE)
    {
        adView.setAdSize(AdSize.BANNER);
    }
    else
    {
        adView.setAdSize(AdSize.SMART_BANNER);
    }

    adView.setAdUnitId("AD_ID");
    AdRequest adRequest = new
     AdRequest.Builder().addTestDevice(Secure.getString(getContentResolver()  
    ,Secure.ANDROID_ID)).build();
    adView.loadAd(adRequest);
}
于 2015-08-13T09:24:16.677 回答