通过AdWhirl AdMob:没有足够的空间来展示广告!想要:480,75,有:320,52

时间:2012-03-09 19:22:08

标签: android adwhirl

我正在尝试使用AdWhirl和AdMob将广告整合到我的Android应用中。

AdWhirl网站向我提供了以下代码:

AdWhirlLayout adWhirlLayout = (AdWhirlLayout) findViewById(R.id.layoutAdWhirl);

int diWidth = 320;
int diHeight = 52;
int density = (int) getResources().getDisplayMetrics().density;

int scaledWidth = (int) (diWidth * density);
int scaledHeight = (int) (diHeight * density);

adWhirlLayout.setAdWhirlInterface(this);
adWhirlLayout.setMaxWidth(scaledWidth);
adWhirlLayout.setMaxHeight(scaledHeight);

这在我的一些模拟器上运行得很好,但是当我尝试一些较小或较旧的模拟器时,我在LogCat中遇到以下错误:

Not enough space to show ad! Wants: 480, 75, Has: 320, 52

如果我使用他们的代码来请求尺寸合适的广告,我该怎么做,但他们不会展示该广告?

1 个答案:

答案 0 :(得分:5)

这里有几件事:

  1. AdMob广告需要320x50与密度无关的像素才能展示广告。每个Android设备,即使是旧的小设备,都符合这些规格。小型240x400像素手机是低密度的,意味着1px = 0.75dp,因此在纵向模式下仍然有320dp来显示广告。您的小型仿真器可能处于这样一种状态:它们非常小(低像素数),但具有中等或高密度,因此仿真器不是320dp宽。检查您的模拟器设置 - 它们可能不代表任何设备。

  2. 上面的代码不需要计算最大宽度和最大高度。只要xml给出AdWhirlView 320x52dp大小(或更优选wrap_content),您就不需要获取设备密度来手动计算这些值。

  3. 更新:

    我有一个新理论。您正在显示AdMob SDK Wants: 480, 75表示您在高密度设备上运行的错误,因为它将320x50dip乘以1.5。但是,这段代码:

    int density = (int) getResources().getDisplayMetrics().density;
    

    正在施放1.5到1,因此adWhirlLayout的最大宽度和高度被错误地设置为320x52像素。对于低密度设备来说,这可能也是一个问题,因为0.75的密度可以被投射到0.它可能适用于中密度设备。

    AdWhirl文档有点过时,但可能应该说float density而不是int density