Einzelnen Beitrag anzeigen

Siggi

Registriert seit: 19. Jun 2004
Ort: Lollar
52 Beiträge
 
Delphi 11 Alexandria
 
#1

Delphi Desktop-Applikation und Android-APP reconnect

  Alt 14. Feb 2021, 13:16
Hallo zusammen,

ich erstelle mein erstes Android-Projekt und habe eine Frage zum Verbindungsaufbau/-Abbau.

Grundkonzept:
  • Eine Desktop-Applikation arbeitet als "Server" und liefert auf Anforderung aus der Android-App Daten
  • Die Verbindung wird per TetheringManager.Autoconnect aufgebaut (WLAN)
  • die Android-App sendet eine Anfrage
  • die Anfrage wird in der Server-Applikation per ResourceReceived eines TetheringAppProfiles empfangen
  • die Server-Applikation antwortet
  • Die Antwort wird in der Android-App ebenfall über ein ResourceReceived eines TetheringAppProfile empfangen

Das ganze funktioniert wunderbar, wenn ich beide Applikationen neu starte, verbinde und miteinander kommunizieren lasse.
Beende ich eine der beiden Applikationen, starte nur diese neu und baue die Verbindung neu auf, erhalte ich zwar über TetheringAppManger.PairedToRemote eine positive Rückmeldung zum Verbindungsaufbau, aber die Events ResourceReceived werden nicht mehr ausgelöst.

Beim Beenden der Android-App baue ich die Verbindung wie folgt ab:
Delphi-Quellcode:
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
  I: Integer;
begin
  for I := TetheringManager1.PairedManagers.Count - 1 downto 0 do
    TetheringManager1.UnPairManager(TetheringManager1.PairedManagers[I]);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  TetheringAppProfile1.Enabled:=False;
  TetheringManager1.Enabled:=False;
end;
Bei der Desktop-Applikation habe ich vergleichbaren Code auf einem Button "Verbindung aufbauen/trennen"
Delphi-Quellcode:
procedure TfrmInventory.btnAppConnectClick(Sender: TObject);
VAR I: Integer;
begin
  if btnAppConnect.Caption='APP verbindenthen // wenn's grundsätzlich geht, anderen Weg als per Caption, aber für ersten Test OK
  begin
    TetheringAppProfile1.Enabled:=true;
    TetheringManager1.Enabled:=true;
    TetheringManager1.AutoConnect;
  end
  else
  begin
    for I := TetheringManager1.PairedManagers.Count - 1 downto 0 do
      TetheringManager1.UnPairManager(TetheringManager1.PairedManagers[I]);
    TetheringAppProfile1.Enabled:=False;
    TetheringManager1.Enabled:=False;
    btnAppConnect.Caption:='APP verbinden';
  end;
end;
Mache ich da einen grundsätzliche Denkfehler oder fehlt nur etwas in meinem Code?

Danke für Eure Tipps,
Siggi
  Mit Zitat antworten Zitat