2017-08-01 128 views
0

你好,我的问题是,模拟器不显示我的测试广告,这里是我的代码

活动Android Studio模拟器不显示测试广告代码

package project.chawki.anew.enwproject; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 

public class MainActivity extends AppCompatActivity { 
    private AdView mAdView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 
    } 
} 

XML

<com.google.android.gms.ads.AdView 
      xmlns:ads="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/adView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_alignParentBottom="true" 
      ads:adSize="BANNER" 
      ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> 
     </com.google.android.gms.ads.AdView> 

摇篮

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig { 
     applicationId "project.chawki.anew.enwproject" 
     minSdkVersion 14 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    testCompile 'junit:junit:4.12' 
    compile 'com.google.android.gms:play-services-ads:11.0.4' 
} 

这是我得到的错误:

08-01 10:00:53.-3367/com.example.chawkii.myapplication W/Ads: There was a problem getting an ad response. ErrorCode: 0 
08-01 10:00:53.-3210/com.example.chawkii.myapplication W/Ads: Failed to load ad: 0 
08-01 10:01:43.-3210/com.example.chawkii.myapplication E/Ads: JS engine could not be obtained. Cancelling ad request 

林学习DEVELOPPEMENT,我不能看到故障,也为他们的权限也很好,但我的测试广告不会在Android设备仿真器加载。请帮忙吗?

+0

遵循这样@chawkii – Jai

+0

https://developers.google.com/android/reference/com/google/android/gms/ads/AdView – Jai

回答

1

做了很多的研究,我发现这个错误的解决方案,这个问题,它不是代码,其实它是在我的模拟器,我不得不下载最后一个API &也更新谷歌播放服务到最后的版本,所以我可以看到广告

0
public class MyActivity extends Activity { 
    private AdView mAdView; 

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

     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 

     // Create a banner ad. The ad size and ad unit ID must be set before calling loadAd. 
     mAdView = new AdView(this); 
     mAdView.setAdSize(AdSize.SMART_BANNER); 
     mAdView.setAdUnitId("myAdUnitId"); 

     // Create an ad request. 
     AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); 

     // Optionally populate the ad request builder. 
     adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); 

     // Add the AdView to the view hierarchy. 
     layout.addView(mAdView); 

     // Start loading the ad. 
     mAdView.loadAd(adRequestBuilder.build()); 

     setContentView(layout); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     // Resume the AdView. 
     mAdView.resume(); 
    } 

    @Override 
    public void onPause() { 
     // Pause the AdView. 
     mAdView.pause(); 

     super.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     // Destroy the AdView. 
     mAdView.destroy(); 

     super.onDestroy(); 
    } 
} 
+0

并没有为我工作:/ – Chawkii

0

您需要将仿真器(或其他设备,如果需要的话)添加为“测试设备”。测试广告只会显示在测试设备上。

为此,您需要在制作AdRequest时致电addTestDevice

改变这一行:

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

到:

AdRequest adRequest = new AdRequest.Builder() 
    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
    .build(); 
+0

这没有工作对我抱歉:/ – Chawkii

0
1. Sign into your AdMob account. 

2. Click on Monetize tab. 

3. Select or Create the app and choose the platform. 

4. Select the ad format either Banner or Interstitial and give the ad unit a name. 

5. Once the ad unit is created, you can notice the Ad unit ID on the dashboard. An example of ad unit id look like ca-app-pub-0664570763252260/3326342124 

Create as many ad units required for your app. 
android-admob-creating-ad-unit 

Create two ad units, one for banner and other for interstitial as we need to use the ad unit IDs in the next section. 
3. Creating New Project 

1. Create a new project in Android Studio from File ⇒ New Project. When it prompts you to select the default activity, select Empty Activity and proceed. 

2. Open build.gradle and add play services dependency as AdMob requires it. 

compile ‘com.google.android.gms:play-services-ads:8.4.0’ 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 

    compile 'com.google.android.gms:play-services-ads:8.4.0' 
} 

3. Add the Ad unit IDs to your strings.xml. Open strings.xml located under res ⇒ values and add the ad units of both Banner and Interstitial. 

<resources> 
    <string name="app_name">AdMob</string> 
    <string name="title_activity_second_activiy">Interstitial</string> 
    <string name="msg_welcome">Welcome to Admob. Click on the below button to launch the Interstitial ad.</string> 
    <string name="btn_fullscreen_ad">Show Fullscreen Ad</string> 

    <!-- AdMob ad unit IDs --> 
    <string name="banner_home_footer">ca-app-pub-0664570763252260/3326522424</string> 
    <string name="interstitial_full_screen">ca-app-pub-0664570763252260/1769900428</string> 

</resources> 

4. Open AndroidManifest.xml and add the below mentioned permissions and other properties. 

> Add INTERNET & ACCESS_NETWORK_STATE permissions. 

> Add google play services version meta-data. 

> Add the AdActivity adding configChanges and theme attributes. 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="info.androidhive.admob"> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <!--Include the AdActivity configChanges and theme. --> 
     <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> 

</manifest> 

3.1 Adding Banner Ad 

Banner ads occupies only a portion of the screen. I am adding a banner ad in my main activity aligning to bottom of the screen. In order to add the banner ad, you need to add com.google.android.gms.ads.AdView element to your xml layout. 

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

5. Open the layout file of your main activity (activity_main.xml) and add the AdView widget. I am also adding a button to launch another in which we’ll try Interstitial ad. 

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="info.androidhive.admob.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/msg_welcome" /> 

    <Button android:id="@+id/btn_fullscreen_ad" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="@string/btn_fullscreen_ad"/> 

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

6. Open MainActivity.java and modify the code as shown. 

> Create an instance of AdRequest and load the ad into AdView. 

> Ad the AdView life cycle methods in onResume(), onPause() and in onDestroy() methods. 

package info.androidhive.admob; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 

public class MainActivity extends AppCompatActivity { 

    private AdView mAdView; 
    private Button btnFullscreenAd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder() 
       .build(); 
     mAdView.loadAd(adRequest); 

     btnFullscreenAd = (Button) findViewById(R.id.btn_fullscreen_ad); 
     btnFullscreenAd.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(MainActivity.this, SecondActivity.class)); 
      } 
     }); 
    } 

    @Override 
    public void onPause() { 
     if (mAdView != null) { 
      mAdView.pause(); 
     } 
     super.onPause(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (mAdView != null) { 
      mAdView.resume(); 
     } 
    } 

    @Override 
    public void onDestroy() { 
     if (mAdView != null) { 
      mAdView.destroy(); 
     } 
     super.onDestroy(); 
    } 
} 

Now if you run the app, you should see a banner ad at the bottom of your screen. 
android-displaying-admob-banner-ad 
+0

按照步骤关闭程序 – Jai

+0

首先我想感谢你的答案,你恢复所有,但问题实际上是解决,它不是代码,实际上是在我的模拟器,我不得不将谷歌播放服务更新到最新版本,以便我可以看到广告 – Chawkii

0

您还没有添加初始化语句。 中的onCreate加入这个(){

..... .... MobileAds.initialize(这一点, “为ca-app-PUB-3940256099942544〜3347511713”);

}

相关问题