Android AdMob addTestDevice没有在logcat中获取deviceID

时间:2014-10-02 22:12:38

标签: android admob

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

我读到模拟器(AVD)必须以Google API 16或17作为目标才能测试AdMob,但是当我创建一个以此为目标的设备时,模拟器无法加载(我留下了它的好处) 20分钟仍然没有加载:(我只是看到闪烁的Android徽标

这是我的AVD设备

enter image description here

这是我的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给出的代码,或者是我必须放入的内容。我注意到developer.google网站有不同的代码所以我认为我不需要包含在我的代码中,因为我还没有得到它。

请帮忙。谢谢。

更新1 我在主活动

中的On Resume中添加了这段代码
@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();
        }

    }

1 个答案:

答案 0 :(得分:1)

测试横幅的API应为17或更高。你有一个很好的答案解释它。 GPS in emulator

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

关于addTestDevice,我认为AdRequest.DEVICE_ID_EMULATOR已经足够了,但是如果你在logcat中看到设备ID的MD5,那么就添加这个哈希。

最后但并非最不重要的是,请记得检查GPS是否安装在开头,在DOCS上进行了解释。

  

要验证Google Play服务版本,请致电googlePlayServicesAvailable()。如果结果代码为SUCCESS,则Google Play服务APK是最新的,您可以继续建立连接。但是,如果结果代码为SERVICE_MISSING,SERVICE_VERSION_UPDATE_REQUIRED或SERVICE_DISABLED,则用户需要安装更新。

所以你会避免错误。