我想检查广告是否加载并在显示屏上可见,因此需要占用空间,或者如果没有加载广告,例如如果互联网连接不可用。
如果没有加载广告,我可以使用这个空间来做其他事情。
如何实现这一点?
mAdView = (AdView) findViewById(R.id.adView);
mAdView.setAdListener(new AdListener() {
// Called when an ad is loaded.
@Override
public void onAdLoaded() {
Log.e(TAG, "Google onAdLoaded");
}
// Called when an ad failed to load.
@Override
public void onAdFailedToLoad(int error) {
String message = "Google onAdFailedToLoad: " + getErrorReason(error);
Log.e(TAG, message);
}
// Called when an Activity is created in front of the app
// (e.g. an interstitial is shown, or an ad is clicked and launches a new Activity).
@Override
public void onAdOpened() {
Log.e(TAG, "Google onAdOpened");
}
// Called when an ad is clicked and about to return to the application.
@Override
public void onAdClosed() {
Log.e(TAG, "Google onAdClosed");
}
// Called when an ad is clicked and going to start a new Activity that will leave the application
// (e.g. breaking out to the Browser or Maps application).
@Override
public void onAdLeftApplication() {
Log.d(TAG, "Google onAdLeftApplication");
}
});
mAdRequest = new AdRequest.Builder().build();
mAdView.loadAd(mAdRequest);
private String getErrorReason(int errorCode) {
// Gets a string error reason from an error code.
String errorReason = "";
switch (errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No fill";
break;
}
return errorReason;
}