如何知道AdMob广告是否已加载

我的Andorid应用程序离线和在线工作。 它在网上模式下显示广告。 在离线模式下工作的情况下,用户切换互联网连接,我想知道广告是否已经加载。 如果没有,那么我会加载一个新的广告。 我看着AdMob API(AdView类),但找不到这样做。

这里是根据AdListener的答案实现我的AdListener。 但是这里实现的方法都没有被执行。

  adView.setAdListener(new AdListener() { @Override public void onReceiveAd(Ad arg0) { Toast.makeText(act, "Ad received",Toast.LENGTH_LONG).show(); } @Override public void onPresentScreen(Ad arg0) { } @Override public void onLeaveApplication(Ad arg0) { // TODO Auto-generated method stub } @Override public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { Toast.makeText(act, "Failed to receive Ad",Toast.LENGTH_LONG).show(); } @Override public void onDismissScreen(Ad arg0) { // TODO Auto-generated method stub } }); 

覆盖AdView的main.xml的一部分

 <FrameLayout android:layout_width="fill_parent" android:layout_height="50dp" > <com.google.ads.AdView xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:id="@+id/adView" android:layout_width="fill_parent" android:layout_height="fill_parent" ads:adSize="BANNER" ads:adUnitId="xxxxxxxxxxxxxxxx" ads:loadAdOnCreate="true" /> </FrameLayout> 

Related of "如何知道AdMob广告是否已加载"

https://developers.google.com/mobile-ads-sdk/docs/android/intermediate#adlistener

 AdView.setAdListener(new AdListener() { // Implement AdListener }); 

当广告可用时,您的AdListener的onReceiveAd()将被调用, onFailedToReceiveAd()将被称为onFailedToReceiveAd()广告不可用与解释为什么的代码(包括networking不可用和没有填充)

更新:

同样的基本答案,新url: https : //developers.google.com/admob/android/banner?hl = zh_CN

只是…!!!

 final AdView mAdView = (AdView) findViewById(R.id.adView); mAdView.setVisibility(View.GONE); mAdView.setAdListener(new AdListener() { private void showToast(String message) { Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); } @Override public void onAdLoaded() { showToast("Ad loaded."); if (mAdView.getVisibility() == View.GONE) { mAdView.setVisibility(View.VISIBLE); } } @Override public void onAdFailedToLoad(int errorCode) { showToast(String.format("Ad failed to load with error code %d.", errorCode)); } @Override public void onAdOpened() { showToast("Ad opened."); } @Override public void onAdClosed() { showToast("Ad closed."); } @Override public void onAdLeftApplication() { showToast("Ad left application."); } }); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); 

我用一点解决方法解决了这个问题。 我第一次检查了AdView是否有空标签。

 if (adView.getTag() != null && adView.getTag() instanceof Boolean && (Boolean) adView.getTag()) { //Adview is already loaded } 

如果adView有一个Boolean标记对象,并且它是true,那么广告已经加载,否则加载广告并设置标记 –

 adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { super.onAdLoaded(); adView.setTag(true); // Set tag true if adView is loaded } @Override public void onAdFailedToLoad(int i) { super.onAdFailedToLoad(i); adView.setTag(false); // Set tag false if loading failed } }); 

你可以使用isLoaded()方法。 我在同一个上下文中使用它,并在计时器内等待,直到加载广告。

https://developer.android.com/reference/com/google/android/gms/ads/InterstitialAd.html