Results 1 to 7 of 7

Thread: FMX, Andriod: Service data overdracht

  1. #1

    FMX, Andriod: Service data overdracht

    Ik heb bezig met een Local Service, dit heb ik nu, maar nu zou ik graag 2 variable naar de Service
    kunnen zenden, en 2 variable van de Service kunnen ontvangen.
    Ik ben aan het zoeken geweest en vindt er wel iets over, maar begrijp er nog niet veel van.

    Hoe pak ik dit aan ?


    Dit is de App:
    Code:
    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
    
      //T.b.v. Service:
      System.Android.Service;
    
    
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FService: TLocalServiceConnection;
    
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     Fservice:= TLocalServiceConnection.Create;
     FService.StartService('MMSoftService1'); //De Naam van de Service opgeven
    end;
    
    end.
    En dit de Service:
    Code:
    unit Unit2;
    
    interface
    
    uses
      System.SysUtils,
      System.Classes,
      System.Android.Service,
      AndroidApi.JNI.GraphicsContentViewText,
      Androidapi.JNI.Os;
    
    type
      TDM = class(TAndroidService)
        function AndroidServiceStartCommand(const Sender: TObject;
          const Intent: JIntent; Flags, StartId: Integer): Integer;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      DM: TDM;
    
    implementation
    
    {%CLASSGROUP 'FMX.Controls.TControl'}
    
    {$R *.dfm}
    
    uses
      Androidapi.JNI.App;
    
    
    function TDM.AndroidServiceStartCommand(const Sender: TObject;
      const Intent: JIntent; Flags, StartId: Integer): Integer;
    begin
     Result := TJService.JavaClass.START_STICKY; // Keep service running
    end;
    
    end.

  2. #2
    Ik ben inmiddels een klein stukje verder, maar ben ook tegen een probleem aangelopen.

    Het probleem is dat ondanks ik in de Service bij "OnStartCommand" de code
    Code:
    Result := TJService.JavaClass.START_STICKY;
    Gebruik, de Service toch regelmatig stopt en niet automatisch herstart.

    Verder kwam ik dit tegen:
    https://stackoverflow.com/questions/...vice-in-delphi

    Op deze manier kan ik iets naar de Service sturen.

    Nu zoek ik nog een mogelijkheid om iets van de Service naar de App te kunnen zenden.

  3. #3
    Ik deel het probleem op in 2 delen, het eerste hoe start ik een (Local) Service die blijft draaien op de achtergrond ook als de App niet meer actief is ?

    Dit zijn een paar pogingen die ik geprobeerd heb:
    Code:
        { Private declarations }
        FServiceConnection1: TLocalServiceConnection;
    
     FServiceConnection1:= TLocalServiceConnection.Create;
     FServiceConnection1.StartService('MMSoftService1');
    Code:
    var
     LIntent: JIntent;
    begin
     LIntent := TJIntent.Create;
     LIntent.setClassName(TAndroidHelper.Context.getPackageName(),
       TAndroidHelper.StringToJString('com.embarcadero.services.MMSoftService1'));
     TAndroidHelper.Activity.startService(LIntent);

  4. #4
    Quote Originally Posted by MMSoft View Post
    Ik deel het probleem op in 2 delen, het eerste hoe start ik een (Local) Service die blijft draaien op de achtergrond ook als de App niet meer actief is ?
    Heb je een probleem met het starten van een service of het laten draaien op de achtergrond. Want dat zijn twee verschillende dingen.

    Als het starten van de service goed gaat, hoef je daar niet meer naar te kijken.
    Als de service afgesloten wordt heb je te maken met de agressiviteit van Android om lopende processen zo veel mogelijk te stoppen.

    Die code die je daar plaatst... is dat in een normale app? Of gebruik je echt een compleet aparte APK/APP?
    Want "An Android Service is an application without user interface that performs background tasks. "
    Dat doet mij vermoeden dat een Android Service dus een echt APARTE app is en niet dat dit iets is wat je vanuit je eigen lopende app aanroept.

    En die app/service moet je daarna ook handmatig bij de batterij optimalisatie uitsluiten. (is dat gedaan?)

  5. #5
    Heb je een probleem met het starten van een service of het laten draaien op de achtergrond. Want dat zijn twee verschillende dingen.
    Het probleem het laten draaien op de achtergrond

    Die code die je daar plaatst... is dat in een normale app?
    Een App en een Service. De App start de Service en deze Service moet dan blijven draaien.

    En die app/service moet je daarna ook handmatig bij de batterij optimalisatie uitsluiten. (is dat gedaan?)
    Dat was gedeeltelijk het probleem, nu blijft deze al een heel stuk langer draaien, maar helaas stopt deze nog...
    (het zou mooi zijn als ik dit met code zou kunnen doen, lijkt jullie dat mogelijk ?)
    Last edited by MMSoft; 10-Sep-22 at 17:27.

  6. #6
    Ik ben inmiddels een stukje verder:
    -Als de batterij optimalisatie niet op onbeperkt staat, dan wordt de gebruiker gevraagd om dat te doen (het App instel scherm wordt dan ook getoond).
    -De Service blijft op de achtergrond draaien.

    Maar hoe kan ik data van de Service naar de App en omgekeerd zenden ?

  7. #7
    Quote Originally Posted by MMSoft View Post
    Maar hoe kan ik data van de Service naar de App en omgekeerd zenden ?
    Misschien helpt dit je verder (of helpt het om met de termen daar verder te zoeken).

    Example: Communication between Activity and Service using Messaging

    (en nee, ik weet daar verder niets van af)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •