Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取Admob的设备ID_Android_Eclipse_Admob - Fatal编程技术网

Android 如何获取Admob的设备ID

Android 如何获取Admob的设备ID,android,eclipse,admob,Android,Eclipse,Admob,我正在使用Eclipse为android开发应用程序,我想集成Admob来赚钱。 教程说我应该看LogCat来找到ID,但它在哪里? 当我在测试模式或真实模式下运行时,有时eclipse会通知Ads返回,但它不会显示在emu中。。。有人能解释一下吗 如果您在模拟器上运行admob ads,则没有ID。只需使用AdManager方法并将其设置为测试模拟器,如logcat所述。如果您在实际设备上运行usb调试并观看logcat,则ID将出现在其中 如果您使用XML布局显示广告,并且如果您的布局XM

我正在使用Eclipse为android开发应用程序,我想集成Admob来赚钱。 教程说我应该看LogCat来找到ID,但它在哪里?


当我在测试模式或真实模式下运行时,有时eclipse会通知Ads返回,但它不会显示在emu中。。。有人能解释一下吗

如果您在模拟器上运行admob ads,则没有ID。只需使用AdManager方法并将其设置为测试模拟器,如logcat所述。如果您在实际设备上运行usb调试并观看logcat,则ID将出现在其中

如果您使用XML布局显示广告,并且如果您的布局XML文件中已经有“ads:testDevices=”,AdMob将不会在LogCat输出中打印“获取此设备上的测试广告…”消息。把它拿出来,然后你会看到LogCat信息

以下是关于如何在LogCat中查找设备id的精彩教程:

如果您仅在模拟器或少数设备上进行测试,则可接受的答案将有效,但如果您在大量设备上进行测试,则可能需要一些方法以程序方式添加正在运行的设备的设备ID

以下代码将以编程方式将当前正在运行的设备转换为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
    }
您需要使用Android的md5,并且它必须是大写的。这是我使用的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(最终字符串s){
试一试{
//创建MD5散列
MessageDigest=java.security.MessageDigest
.getInstance(“MD5”);
更新(s.getBytes());
字节messageDigest[]=digest.digest();
//创建十六进制字符串
StringBuffer hexString=新的StringBuffer();
for(int i=0;i

编辑:显然MD5方法并不完美,有人建议我尝试一下,因为我不再需要这个功能,所以我还没有测试过。祝你好运

以获取哈希设备ID

在oncreate中

String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        String deviceId = md5(android_id).toUpperCase();
Log.i("device id=",deviceId);
然后为md5()添加这个类

公共字符串md5(字符串s){
试一试{
//创建MD5散列
MessageDigest=java.security.MessageDigest.getInstance(“MD5”);
更新(s.getBytes());
字节messageDigest[]=digest.digest();
//创建十六进制字符串
StringBuffer hexString=新的StringBuffer();

对于(int i=0;i类似于谷歌广告的内容,来自文档:

public addRequest.Builder addTestDevice(字符串设备ID)

使设备接收测试广告。设备ID可通过 创建新广告后查看logcat输出。对于模拟器,使用 设备ID模拟器

例如,LogCat中显示的我的测试设备id是“B86BC9402A69B031A516BC57F7D3063F”


如果您正在实际设备上测试您的应用程序,那么您可以尝试这个小型android应用程序,它会为您提供设备id:

您将直接获得散列设备id。
希望这能有所帮助。

我有几个设备正在测试,不想手动获取每个设备的DeviceID。这里的答案是以编程方式获取DeviceID,但对我不起作用(缺少零),这导致显示真实的广告而不是测试广告

我将它放在我的应用程序类onCreate中,然后使用getter方法公开deviceId,以便可以在整个过程中访问它

@Override
public void onCreate() {        
    super.onCreate();

    String androidId =  Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
    deviceId = MD5(androidId).toUpperCase();        
}  

public static String getDeviceId() {
    return deviceId;
}

private static String deviceId;
MD5法

public String MD5(String md5) {
   try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.getBytes());
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < array.length; ++i) {
            sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
        }
        return sb.toString();
    } catch (java.security.NoSuchAlgorithmException e) {
    }
    return null;
}

如果您没有在日志中获取它,只需放入任何设备id并加载广告并运行您的应用程序,然后转到日志,您将像这样获取它
I/Ads:使用AdRequest.Builder.addTestDevice(“XXXXXXXXXXXXXXXXXXXXXXXXX”)在该设备上获取测试广告。
之后,将其放置并再次运行应用程序。

显示测试广告的另一种最简单的方法是使用测试设备id作为横幅,显示所有设备的admob测试广告ca-app-pub-3940256099942544/630978111”。此admob测试广告id已在谷歌的admob教程中注明:。 这是上面链接中的引用:

  • 这是间隙“ca-app-pub-3940256099942544/1033173712”的测试设备id。这也用于

    • 应用程序:
      build.gradle

      dependencies {
      ...
      compile 'com.google.firebase:firebase-ads:10.0.1'
      ...
      }
      
      您的活动:

       AdRequest.Builder builder = new AdRequest.Builder();
              if(BuildConfig.DEBUG){
      
                  String android_id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
                  String deviceId = io.fabric.sdk.android.services.common.CommonUtils.md5(android_id).toUpperCase();
                  builder.addTestDevice(deviceId);
              }
              AdRequest adRequest = builder.build();
          adView.loadAd(adRequest);
      
      这样做:

      InterstitialAd mInterstitial = new InterstitialAd(this);
          mInterstitial.setAdUnitId("your id");
          AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice("some words")
          .build();
          mInterstitial.loadAd(adRequest);
      
      运行应用程序后。。。 进入Logcat,输入详细信息,输入搜索字段AdRequest,以便id设备显示donw

      .addTestDevice(“将id放在此处”)

      我希望有帮助;

      • 您的应用程序是否发布在Play store上?是否有实时广告:
      如果您的应用程序在Play store上显示实时广告——您不能使用实时广告进行测试——请在代码中添加您的设备ID,以便在您的真实设备上从Admob获取测试广告。在开发或测试期间,切勿使用实时广告

      要在logcat中获取真实的设备ID,

    • 在USB调试模式下将设备连接到Android Studio
    • 打开设备上显示Admob直播广告的任何应用程序:在连接的设备上,如果您从play store下载了应用程序(显示直播广告),请打开该应用程序或打开显示Admob直播广告的任何其他应用程序。您的设备应具有互联网连接

    • 使用“设备”过滤logcat,如下所示,以获取测试设备


    • 阅读了解更多信息

      将此类添加到项目中

      import android.content.Context;
      import android.provider.Settings;
      import android.text.TextUtils;
      
      import com.google.android.gms.ads.AdRequest;
      import java.io.UnsupportedEncodingException;
      
      public class AdsHelper {
      public static AdRequest createRequest(Context context) {
          AdRequest.Builder adRequest = new AdRequest.Builder();
          adRequest.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
          if (BuildConfig.DEBUG) {
              String deviceId = MD5(getDeviceId(context));
              if (!TextUtils.isEmpty(deviceId)) {
                  adRequest.addTestDevice(deviceId.toUpperCase());
              }
          }
      
          return adRequest.build();
      }
      
      
      
          private static String MD5(String md5) {
              if (TextUtils.isEmpty(md5)) return null;
              try {
                  java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
                  byte[] array = md.digest(md5.getBytes("UTF-8"));
                  StringBuilder sb = new StringBuilder();
                  for (byte anArray : array) {
                      sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3));
                  }
                  return sb.toString();
              } catch (java.security.NoSuchAlgorithmException ignored) {
              } catch(UnsupportedEncodingException ignored){
              }
              return null;
          }
      
          private static String getDeviceId(Context context) {
              try {
                  return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
              } catch (Exception e) {
                  return "";
              }
      
          }
      }
      
      用法:

      AdRequest adRequest = AdsHelper.createRequest(this);
      

      要获取设备id,请将手机连接到USB,然后在android studio中打开logcat 使用以下代码(确保设备中已启用USB调试)。
      InterstitialAd mInterstitial = new InterstitialAd(this);
          mInterstitial.setAdUnitId("your id");
          AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice("some words")
          .build();
          mInterstitial.loadAd(adRequest);
      
      import android.content.Context;
      import android.provider.Settings;
      import android.text.TextUtils;
      
      import com.google.android.gms.ads.AdRequest;
      import java.io.UnsupportedEncodingException;
      
      public class AdsHelper {
      public static AdRequest createRequest(Context context) {
          AdRequest.Builder adRequest = new AdRequest.Builder();
          adRequest.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
          if (BuildConfig.DEBUG) {
              String deviceId = MD5(getDeviceId(context));
              if (!TextUtils.isEmpty(deviceId)) {
                  adRequest.addTestDevice(deviceId.toUpperCase());
              }
          }
      
          return adRequest.build();
      }
      
      
      
          private static String MD5(String md5) {
              if (TextUtils.isEmpty(md5)) return null;
              try {
                  java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
                  byte[] array = md.digest(md5.getBytes("UTF-8"));
                  StringBuilder sb = new StringBuilder();
                  for (byte anArray : array) {
                      sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3));
                  }
                  return sb.toString();
              } catch (java.security.NoSuchAlgorithmException ignored) {
              } catch(UnsupportedEncodingException ignored){
              }
              return null;
          }
      
          private static String getDeviceId(Context context) {
              try {
                  return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
              } catch (Exception e) {
                  return "";
              }
      
          }
      }
      
      AdRequest adRequest = AdsHelper.createRequest(this);
      
      val adRequest = AdRequest
              .Builder()
              .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
              .addTestDevice("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")
              .build()