AdMob через AdWhirl: недостаточно места для показа рекламы! Хочет: 480, 75, Имеет: 320, 52 - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь интегрировать рекламу в свое приложение для Android с помощью AdWhirl и AdMob.

Сайт 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 Ответ

5 голосов
/ 10 марта 2012

Здесь есть пара вещей:

  1. Для показа объявления AdMob требуется 320x50 независимых от плотности пикселей.Каждое устройство Android, даже старое маленькое, отвечает этим требованиям.Небольшие телефоны с разрешением 240x400 пикселей имеют низкую плотность, что означает 1px = 0,75dp, поэтому в портретном режиме еще есть 320dp для показа рекламы.Ваши маленькие эмуляторы, вероятно, находятся в таком состоянии, когда они действительно малы (низкое количество пикселей), но имеют среднюю или высокую плотность, так что эмулятор не имеет ширину 320 dp.Проверьте настройки эмулятора - они, вероятно, не являются репрезентативными для любого устройства.

  2. Приведенный выше код для расчета максимальной ширины и максимальной высоты не требуется.Пока xml предоставляет размер AdWhirlView 320x52dp (или более предпочтительно, wrap_content), вам не нужно захватывать плотность устройства для вычисления этих значений вручную.

ОБНОВЛЕНИЕ:

У меня есть новая теория.Ошибка, которую вы показываете, когда 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.

...