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