2013-04-12 9 views
7

Przez kilka miesięcy rozwijałem grę z MonoGame, a ja właśnie wypuściłem ją kilka dni temu. Teraz staram się, by AdMob działał poprawnie, więc mogę udostępnić bezpłatną wersję aplikacji. Jestem początkującym w układach Androida, więc nie mam pojęcia, co robię.Jak wyświetlać reklamę AdMob u dołu ekranu w aplikacji na Androida przy użyciu Xamarin/Monogame?

Udało mi się uzyskać reklamę do wyświetlania w mojej aplikacji po przeszukaniu sieci w celu uzyskania informacji o implementacji AdMob z MonoGame, ale aplikacja jest zawsze wyświetlana u góry ekranu. Niewiele mi się udało znaleźć informacje o zmianie pozycji reklamy w MonoGame/Xamarin.

Oto kod, który działa i wyświetla reklamy na górze ekranu:

Activity1.cs:

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity 
    { 
     internal View adView = null; 

     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      Game1.Activity = this; 
      var g = new Game1(); 
      FrameLayout fl = new FrameLayout(this); 
      fl.AddView(g.Window); 
      adView = AdMobHelper.CreateAdView(this, "<my id here>"); 
      var layoutParams = new ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.FillParent, Android.Views.ViewGroup.LayoutParams.WrapContent); 

      fl.AddView(adView, layoutParams); 
      SetContentView(fl); 
      AdMobHelper.RequestFreshAd(adView); 
      g.Run(); 


     } 
    } 

To działa bez żadnych dodatkowych układów. Teraz tutaj jest kod mam przyswojone od kilku stronach internetowych obejmujących opinia

Activity1.cs:

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity 
    { 
     internal View adView = null; 

     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 

      Game1.Activity = this; 
      var g = new Game1(); 
      SetContentView(Resource.Layout.Main); 
      View gameView = FindViewById(Resource.Id.GameView); 
      ViewGroup parent = (ViewGroup)gameView.Parent; 
      int index = parent.IndexOfChild(gameView); 
      parent.RemoveView(gameView); 
      parent.AddView(g.Window, index); 
      adView = FindViewById(Resource.Id.Ad); 
      parent = (ViewGroup)adView.Parent; 
      index = parent.IndexOfChild(adView); 
      parent.RemoveView(adView); 
      var layoutParams = adView.LayoutParameters; 
      adView = AdMobHelper.CreateAdView(this, "<my id here>"); 
      adView.LayoutParameters = layoutParams; 
      parent.AddView(adView, index); 
      AdMobHelper.RequestFreshAd(adView); 
      g.Run(); 
     } 
    } 

i mój dodatkowy plik Main.axml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <SurfaceView 
     android:id="@+id/GameView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
    <com.google.ads.AdView 
     android:id="@+id/Ad" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_gravity="bottom" /> 
</FrameLayout> 

jednak kiedy uruchamiam to, uruchamiam awarię w linii "SetContentView (Resource.Layout.Main);" w Activity1.cs. Visual Studio podaje błąd:

Unhandled Exception: 
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.admob.android.ads.AdView 

Mimo, że nie ma żadnych błędów w oknie wyjściowym błędu, aby sprawdzić ... Jaką pomoc? Idealnie, chciałbym, aby ta reklama admob pokazała się u dołu mojej aplikacji. Dzięki!

Odpowiedz

2

To jest kod dodawania admob. Zrobiłem z powodzeniem może pracować dla Ciebie

<com.google.ads.AdView 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
android:id="@+id/adView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
ads:adSize="BANNER" 
ads:adUnitId="Your Admob 15 digit alpha numeric ID" 
/> 

aw swojej działalności, w sposób onCreate dodać następujący kod

AdView adview = (AdView)findViewById(R.id.adView); 
AdRequest re = new AdRequest(); 
re.setTesting(true); 
adview.loadAd(re); 

Jest to praca dla mnie. Więcej szczegółów można znaleźć w witrynie AdMob

1

Rozwiązanie nr 2
Szybkim sposobem bez kodowania, to po prostu dodać do elementu xmlns aplikacji i ads:loadAdOnCreate="true" do elementu adView w AndroidManifest.xml

0

To powinno działać dla ciebie, używam go w ten sposób bez żadnych problemów.

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity 
{ 
    internal View adView = null; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     Game1.Activity = this; 
     var g = new Game1(); 
     FrameLayout fl = new FrameLayout(this); 
     LinearLayout ll = new LinearLayout(this); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     ll.setGravity(Gravity.BOTTOM); 
     fl.AddView(g.Window); 
     adView = AdMobHelper.CreateAdView(this, "<my id here>"); 
     ll.addView(adView); 
     fl.AddView(ll); 
     SetContentView(fl); 
     AdMobHelper.RequestFreshAd(adView); 
     g.Run(); 


    } 
} 
Powiązane problemy