如何检查AdView是否可见?

5

我想检查广告是否加载并在显示屏上可见,因此需要占用空间,或者如果没有加载广告,例如如果互联网连接不可用。

如果没有加载广告,我可以使用这个空间来做其他事情。

如何实现这一点?

2个回答

6
你可以实现AdListener来达到这个目的。只需重写onAdFailedToLoadonAdLoaded即可。

2
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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接