Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   XE5 Android Komponenten (https://www.delphipraxis.net/176981-xe5-android-komponenten.html)

arnof 8. Okt 2013 16:51

XE5 Android Komponenten
 
Hi,

leider fehlt mir einige Komponenten / Anleitungen Android:

z.B. Anbindung von admob, in App kauf, SMS, Barcode bzw. einbinden fremder Klassen.

Habt Ihr da schon mal was gefunden ?

Union 8. Okt 2013 17:29

AW: XE5 Android Komponenten
 
AdMob ist hier beschrieben.

Ein schönes Beispiel für das Einbinden von (eigenen) Java-Klassen ist das hier.

arnof 8. Okt 2013 19:38

AW: XE5 Android Komponenten
 
Zitat:

Zitat von Union (Beitrag 1231258)
AdMob ist hier beschrieben.

Ein schönes Beispiel für das Einbinden von (eigenen) Java-Klassen ist das hier.

Schon klar, aber wie binde ich das in XE5 ein ?

Union 8. Okt 2013 21:27

AW: XE5 Android Komponenten
 
Das steht Schritt für Schritt erklärt weiter unten auf der Seite (Create a Firemonkey mobile application).

arnof 10. Okt 2013 11:17

AW: XE5 Android Komponenten
 
so nach einigen hin und her klappt die Einbindung nun.

Die Preisfrage ist nun, wie kriegt man die Darstellung hin ?

java braucht die Activity, wo bekomme ich die her ?

Martago 17. Okt 2013 08:34

AW: XE5 Android Komponenten
 
Hallo,

ich habe das Problem, dass ich eine Android Klasse einbinden kann, allerdings wenn diese Klasse eine Libary einbindet, dann habe ich das Problem, dass Delphi diese Libary nicht findet.

Frage: Wie binde ich in Delphi richtig eine .jar Libary ein und muss dazu noch Quelltext geschrieben werden, wenn ja wie?
Gibt es dafür eine Dokumentation?

MfG Martago

Martago 18. Okt 2013 07:49

AW: XE5 Android Komponenten
 
Hallo,

ich habe bisher folgendes festgestellt ...
Die JAR Dateien haben keine classes.dex Datei, dadurch kann diese nicht auf dem selben Weg wie die APK eingebunden werden.

Ich habe ein Beispiel gefunden wie dies eingebunden werden kann, allerdings verstehe ich diese nicht wirklich ...

Re my approach. Here's my Java class:

public class Foo
{
public int Bar(final Activity activity)
{
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
Toast.makeText(activity.getApplicationContext(), "Hello world from a Java .jar library", Toast.LENGTH_SHORT).show();
}
});

return 57;
}
}

Here's my Delphi import unit:

unit FooU;

interface

uses
Androidapi.JNIBridge,
Androidapi.JarBridge,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.App;

type
JFoo = interface;

JFooClass = interface(JObjectClass)
['{D867F94E-8E45-4F10-8045-ADB4951608FA}']
end;

[JavaJarSignature('com.blong.test.Foo', 'foo_dex.jar')]
JFoo = interface(JObject)
['{510A0F39-4CFC-4F03-A450-06E26503ECFA}']
{Methods}
function Bar(Activity: JActivity): Integer; cdecl;
end;

TJFoo = class(TJarGenericImport<JFooClass, JFoo>)
end;

implementation

end.

Quelle: https://plus.google.com/117591599539...ts/Tc7viMithGi
// Bereich Kommentar

Gibt es eine Erklärung wie man die Java Signatur von einer JAR Datei bekommt?

Union 18. Okt 2013 10:19

AW: XE5 Android Komponenten
 
Du musst aus dem .jar file zuerst ein apk erstellen. Danach geht's normal weiter. Beispiel:
Code:
REM C:\Program Files (x86)\Android\android-sdk\build-tools\18.0.1>
dx --dex --output=c:\temp\annotations.apk ..\..\tools\proguard\examples\annotations\lib\annotations.jar
dx --dex --output=c:\temp\annotations.dex c:\temp\annotations.apk
dexdump c:\temp\annotations.dex

Martago 18. Okt 2013 11:30

AW: XE5 Android Komponenten
 
Super!
Vielen Dank schon mal dafür!

Ich habe allerdings das selbe Problem wie der arnof, dass ich Probleme habe mit der Activity nach Android zu bekommen.
In Android habe ich eine Methode setActivity(Activity activity) zudem habe ich dort ein Attribute: private Activity activity welches ich befülle.
Dies klappt alles, allerdings wenn ich dannn z.B. eine Toastmeldung ausgebe, bekomme ich keine Ausgabe auf meinen Bildschirm
Bsp: Toast.makeText(this.activity, "Hello World!", Toast.LENGTH_LONG).show();
Und wenn ich z.B.: PackageManager pm = activity.getPackageManager(); verwende, hängt sich die Anwendung auf.

Ich übergebe die Activity in Delphi so:
Code:
      // *** Schritt 1: Activity setzen ***
      // Methode vorbereiten mit DEX ID
      SetMethodActivity := TJNIResolver.GetJavaMethodID((jTempClass as ILocalObject)
        .GetObjectID, 'setActivity', '(Landroid/app/Activity;)V');
      if not assigned(SetMethodActivity) then
      begin
        Memo1.Lines.Add('Fehler bei Activity');
        Exit;
      end;



      // Methode aufrufen mit dem Parameter banner_id
      JavaEnv^.CallVoidMethodA(JavaEnv, JavaObjectID, SetMethodActivity, @act);
act ist bei mir: act:JActivity;
Wenn ich in der Deklaration suche, finde ich leider auch diesen Eintrag nicht:
Datei: Androidapi.JNI.App

Beudeutet dies, ich muss die Methode dort einbauen?
Wenn ja, gibt es dafür für Anfänger ein Tutorial oder könntest du es mir kurz erklären?
Da ich mich leider nur mit Java auskenne...

Vielen Dank schon mal!

arnof 29. Okt 2013 22:05

AW: XE5 Android Komponenten
 
Zitat:

Zitat von Union (Beitrag 1231270)
Das steht Schritt für Schritt erklärt weiter unten auf der Seite (Create a Firemonkey mobile application).

Ich bin zu blöd dazu! ich zahle für eine admob Anbindung gerne ein paar Scheine.

@All: an die Wissenden: Einfach eine pm/pn senden mit einem Angebot


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Seite 1 von 2  1 2      

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