Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Admob Android (https://www.delphipraxis.net/180772-admob-android.html)

Peter666 17. Jun 2014 07:46

Admob Android
 
Hi,

ich habe angefangen die Admob Interfaces für XE5 zu portieren. Ich weiß es gibt das schon in der XE6, aber deswegen mag ich aber kein Upgrade kaufen. Das Problem was ich derzeit habe ist, dass der JAdView und JAdSize nicht findet. Ich mache quasi so etwas: TJAdView.JavaClass.init(SharedActivity, FBannerSize, StringToJString(FUnitID)) und danach kommt eine Fehlermeldung.

Hat jemand eine Idee?

mkinzler 17. Jun 2014 08:00

AW: Admob Android
 
Zitat:

und danach kommt eine Fehlermeldung.
Und welche?

Peter666 17. Jun 2014 08:09

AW: Admob Android
 
"Java Klasse JAdSize wurde nicht gefunden" erscheint. Am Manifest liegt es nicht, da hab ich folgendes activity mit drin:
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|ori entation|screenLayout|uiMode|screenSize|smallestSc reenSize"/>

Peter

mkinzler 17. Jun 2014 08:18

AW: Admob Android
 
Die Java-Klassen sind ohne J AdSize und AdView

Peter666 17. Jun 2014 10:07

AW: Admob Android
 
Das schaut bei mir so aus:

Delphi-Quellcode:
//https://developer.android.com/reference/com/google/android/gms/ads/AdView.html
[JavaSignature('com/google/ads/AdView')]
JAdView = interface(JRelativeLayout)
['{5AFB60B2-1C85-4443-BEBC-0FB6433F0ED5}']
  procedure destroy; cdecl;
  function getAdListener(): JAdListener;cdecl;
  function getAdSize():JAdSize;cdecl;
  function getAdUnitId():JString;cdecl;
  function getInAppPurchaseListener(): JInAppPurchaseListener;cdecl;
  procedure loadAd(adRequest: JAdRequest); cdecl;
  procedure pause();cdecl;
  procedure resume();cdecl;
  procedure setAdListener(adListener: JAdListener); cdecl;
  procedure setAdSize(AdSize: JAdSize); cdecl;
  procedure setAdUnitID(adUnitID: JString);cdecl;
  procedure setInAppPurchaseListener(InAppPurchaseListener: JInAppPurchaseListener);cdecl;
end;
TJAdView = class(TJavaGenericImport<JAdViewClass, JAdView>) end;

Peter666 20. Jun 2014 10:32

AW: Admob Android
 
Ich nochmal :(

Irgendwie will das mit Admob nicht und ich sehe den Fehler nicht.

Delphi-Quellcode:
uses
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.GraphicsContentViewText;

{$R *.fmx}

type
 // https://developer.android.com/reference/com/google/android/gms/ads/AdSize.html
  [JavaSignature('com/google/ads/AdSize')]
  JAdSize = interface(JObject)
   ['{F2630EE1-D9D9-493B-8586-98779275393B}']
  { Methods }
    function equals(other: JObject): Boolean; cdecl;
    function getHeight: Integer; cdecl;
    function getHeightInPixels(context: JContext): Integer; cdecl;
    function getWidth: Integer; cdecl;
    function getWidthInPixels(context: JContext): Integer; cdecl;
    function hashCode: Integer; cdecl;
    function isAutoHeight: Boolean; cdecl;
    function isFullWidth: Boolean; cdecl;
    function toString: JString; cdecl;
  end;

  JAdSizeClass = interface(JObjectClass)
    ['{1D3C7938-2841-4BF0-B5FB-D4842D905FF7}']
  { Constants }
    function _GetAUTO_HEIGHT: Integer; // -2
    function _GetFULL_WIDTH: Integer; // -1
  { Fields }
    function _Get_BANNER: JAdSize;
    function _Get_FULL_BANNER: JAdSize;
    function _Get_LARGE_BANNER: JAdSize;
    function _Get_LEADERBOARD: JAdSize;
    function _Get_MEDIUM_RECTANGLE: JAdSize;
    function _Get_SMART_BANNER: JAdSize;
    function _Get_WIDE_SKYSCRAPER: JAdSize;
  { Methods }
    function init(width: Integer; height: Integer): JAdSize; cdecl;
  { Properties }
    property AUTO_HEIGHT: Integer read _GetAUTO_HEIGHT;
    property FULL_WIDTH: Integer read _GetFULL_WIDTH;
    property BANNER: JAdSize read _Get_BANNER;
    property FULL_BANNER: JAdSize read _Get_FULL_BANNER;
    property LARGE_BANNER: JAdSize read _Get_LARGE_BANNER;
    property LEADERBOARD: JAdSize read _Get_LEADERBOARD;
    property MEDIUM_RECTANGLE: JAdSize read _Get_MEDIUM_RECTANGLE;
    property SMART_BANNER: JAdSize read _Get_SMART_BANNER;
    property WIDE_SKYSCRAPER: JAdSize read _Get_WIDE_SKYSCRAPER;
  end;

  TJAdSize = class(TJavaGenericImport<JAdSizeClass, JAdSize>)
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  ad: JAdSize;
begin
  ad := TJAdSize.JavaClass.BANNER;
end;
Sobald ich das Objekt holen will kommt die Meldung das es nicht existiert.

Ich denke mal ich muss die Google Mobile Ads mit in meine classes.dex einbinden, aber wie mache ich das am dümmsten? Also so das alle schon vorhandenen Jars+Google Ads einkompiliert werden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz