Принятые ответы будут работать, если вы тестируете только на эмуляторе или на нескольких устройствах, но если вы тестируете на множестве устройств, вам могут потребоваться некоторые средства программного добавления идентификатора устройства работающего устройства.
Следующий код превратит текущее работающее устройство в тестовое устройство adview программным способом
...
if(YourApplication.debugEnabled(this)) //debug flag from somewhere that you set
{
String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
String deviceId = md5(android_id).toUpperCase();
mAdRequest.addTestDevice(deviceId);
boolean isTestDevice = mAdRequest.isTestDevice(this);
Log.v(TAG, "is Admob Test Device ? "+deviceId+" "+isTestDevice); //to confirm it worked
}
Вам нужно использовать md5 идентификатора Android, и он должен быть в верхнем регистре. Вот код md5, который я использовал
public static final String md5(final String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String h = Integer.toHexString(0xFF & messageDigest[i]);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
Logger.logStackTrace(TAG,e);
}
return "";
}
РЕДАКТИРОВАТЬ: Очевидно, что метод MD5 не совершенен, и было предложено попробовать https://stackoverflow.com/a/21333739/2662474 Мне больше не нужна эта функция, поэтому я не тестировал. Удачи!