Android AdMob addTestDevice未在logcat中获取设备ID

Android AdMob addTestDevice未在logcat中获取设备ID,android,admob,Android,Admob,我正在尝试使用Google Play服务实现AdMob。 到目前为止,我有默认的测试横幅出现,但我想尝试一些测试广告 我读到emulator(AVD)必须以Google API 16或17为目标,才能测试AdMob,但是当我创建一个以谷歌API 16或17为目标的设备时,emulator无法加载(我离开它整整20分钟了,仍然没有加载:(我只看到闪烁的android徽标。) 这是我的AVD设备 这是我的AdFragment类,它包含与广告相关的所有代码 public class AdFragme

我正在尝试使用Google Play服务实现AdMob。 到目前为止,我有默认的测试横幅出现,但我想尝试一些测试广告

我读到emulator(AVD)必须以Google API 16或17为目标,才能测试AdMob,但是当我创建一个以谷歌API 16或17为目标的设备时,emulator无法加载(我离开它整整20分钟了,仍然没有加载:(我只看到闪烁的android徽标。)

这是我的AVD设备

这是我的AdFragment类,它包含与广告相关的所有代码

public class AdFragment extends Fragment 
{

    private AdView mAdView;

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,  Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.fragment_ad, container, false);

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        mAdView = (AdView)getView().findViewById(R.id.adView);

        AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .build();


         // Start loading the ad in the background.
        mAdView.loadAd(adRequest);

    }

    /** Called when leaving the activity */
    @Override
    public void onPause() 
    {
        if (mAdView != null) 
        {
            mAdView.pause();
        }

        super.onPause();
    }

    /** Called when returning to the activity */
    @Override
    public void onResume() 
    {
        super.onResume();
        if (mAdView != null) 
        {
            mAdView.resume();
        }
    }

    /** Called before the activity is destroyed */
    @Override
    public void onDestroy() {
        if (mAdView != null) 
        {
            mAdView.destroy();
        }
        super.onDestroy();
    }



}
现在我不确定是我的代码没有生成设备ID,还是我创建的AVD设备有问题

.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
 .addTestDevice("2EAB96D84FE62876379A9C030AA6A0AC") 
现在我不知道最后一行是LogCat给出的代码还是我必须输入的代码。我注意到开发者。google网站有一个不同的代码,所以我假设我不需要在代码中包含,因为我还没有得到它

请帮忙,谢谢

更新1 我在我的主要活动的简历中添加了这段代码

@Override
    protected void onResume()
    {
        // TODO Auto-generated method stub
        super.onResume();
        int isAvaiable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if(isAvaiable == ConnectionResult.SUCCESS)
        {
            Log.d("TEST", "GPS IS OK");
        }
        else if(isAvaiable == ConnectionResult.SERVICE_MISSING || isAvaiable == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED || isAvaiable == ConnectionResult.SERVICE_DISABLED)
        {
            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvaiable, this, 1);
            dialog.show();
        }

    }

测试横幅的API应该是17或更高。这里有一个很好的答案来解释它

对于与启动emulator相关的问题,我能给您的唯一建议是尝试使用更小的屏幕。 你可以尝试其他模拟器,比如下载和最后一个。在我的例子中,默认的android模拟器在ldpi中需要10-12分钟才能响应,而在hdpi中只有2分钟

关于addTestDevice,我认为AdRequest.DEVICE\u ID\u EMULATOR就足够了,但是如果您在logcat中看到设备ID的MD5,那么就添加这个散列

最后但并非最不重要的一点是,记得在开始时检查是否安装了GPS,文档中对此进行了解释

要验证Google Play服务版本,请调用isGooglePlayServicesAvailable()。如果结果代码为成功,则Google Play services APK是最新的,您可以继续建立连接。但是,如果结果代码为缺少服务、需要服务版本更新或禁用服务,则用户需要安装更新


因此,您将避免错误。

您好,我制作了一个AVD设备,与您发布Google API 17的链接上的设备完全相同。AVD现在运行,但我遇到了另一个问题。尽管log cat说广告加载完成,但广告似乎没有加载。当我旋转广告时,广告会出现。报告的另一个问题是“Google Play服务已过时”,“由于错误2,Google Play服务不可用"。我执行了您提到的关于检查Google play版本的检查,并在上面发布了代码。对话框显示为“更新服务”,但单击“更新”似乎会导致对话框再次出现*广告未显示。旋转以横向浏览广告显示。如果您的Google play服务是最新版本,请尝试使用最新的谷歌API 19。如果是第一次在设备上运行,广告可能会延迟近一分钟。谢谢,这起作用了,就像你说的,只是花了一段时间。但是logcat不断重复这个错误。现在出现6942次哈哈。10-03 11:31:55.811:E/eglcodeccon(1247)GLUTILSPARAMESIZ:不知道PARAM 0x000 000 0BD0 10-03 11:31:55.831:E/EGLCODECUM(1247):****错误未知类型0x0(GLSIEZOF,72)看起来好像是一个错误,如果不可行的话考虑使用另一个仿真器。