Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   LocationSensor Crash Android64 (https://www.delphipraxis.net/209859-locationsensor-crash-android64.html)

nikosophi 1. Feb 2022 09:40

LocationSensor Crash Android64
 
Hallo,

ich versuche unter Delphi 11 den LocationSensor wieder zum Laufen zu bringen. In der letzten Delphi Version hat das noch funktioniert.
Dazu habe ich das Emba Beispiel LocationDemoProject.dproj genommen:

Android 64, auf dem Device Samsung S20 ist Android 11
In der Berechtigungsliste ist angehakt: auf ungefähren Standort zugreifen und auf genauen Standort zugreifen.
Da in dem Beispiel die Rechte nicht abgefragt werden, habe ich dies in den Einstellungen/Apps/LocationDemoProject Standort freigegeben gemacht.

Sobald LocationSensor.Activ auf TRUE geht crasht die App auch im Debugger. Sie verschwindet ohne dass eine Exception ausgegeben wird.

Ich habe auch schon eigene Testprogramme mit Berechtigungsabfragen etc gemacht, immer das gleiche Ergebnis.

Hat jemand eine Idee einer Lösung? Eine andere Komponente? Habe das Gefühl mit FMX funktioniert von Version zu Version immer weniger...

philipp.hofmann 1. Feb 2022 11:58

AW: LocationSensor Crash Android64
 
Bei mir ist es umgekehrt, mit jeder Delphi-Version wird es besser. Ich frage die Permissions seit Delphi 11 folgendermaßen ab:

Delphi-Quellcode:
{$IFDEF ANDROID}
procedure TfTibbleBox.LocationPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
var i: Integer;
begin
  if ((length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted)) then
  begin
    mlog.info('User granted Location-Android-permission');
  end else begin
    mlog.info('Not all Location-Android-permission granted (' + IntToStr(length(AGrantResults)) + ')');
    for i:=0 to length(AGrantResults) - 1 do
    begin
      if (AGrantResults[i] = TPermissionStatus.Granted) then
        mlog.info(IntToStr(i) + ': granted')
      else
        mlog.info(IntToStr(i) + ': not granted');
    end;
  end;
end;

procedure TfTibbleBox.requestLocationPermissions();
begin
  if (not requestedLocationPermissions) then
  begin
    requestedLocationPermissions:=true;
    mlog.info('Request Location-Permission for Android');
    PermissionsService.RequestPermissions(['android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_FINE_LOCATION'], LocationPermissionRequestResult);
  end;
end;
{$ENDIF}

nikosophi 1. Feb 2022 12:24

AW: LocationSensor Crash Android64
 
Na, das freut mich für dich. Ehrlich.
Die Abfrage der Rechte ist auch nicht das Problem.
Wie ich geschrieben habe, kann man die ja auch manuell über die Einstellungen setzen.

Wenn du LocationSensor.Active auf TRUE setzt, ich setze mal Standardwerte der Komponente voraus, dann liefert sie Koordinaten?
Erstaunlich. Ich hatte es auch noch nie, dass Delphi eine App im Debug Modus ohne Exception einfach beendet.

Ich bin momentan ratlos und weiß nicht, wo ich anfangen soll zu suchen.

philipp.hofmann 1. Feb 2022 12:46

AW: LocationSensor Crash Android64
 
Zugegeben Debugge ich sehr selten, ich arbeite auf Remote-Devices meist über Log-Files im Release-Modus und debugge meist nur unter Windows.
Aber ja, ich bekomme in meiner App die Location-Infos zurückgeliefert.

TurboMagic 1. Feb 2022 21:16

AW: LocationSensor Crash Android64
 
Monitor.bat aus dem Android SDK aufrufen um das Logcat Log anzuzeigen. Evtl. gibt's da Hinweise zum Crash.

AuronTLG 15. Feb 2022 11:44

AW: LocationSensor Crash Android64
 
Jetzt erst gesehen:

Schau dir mal den Eintrag hier an.
Bei den älteren Kommentaren befindet sich ein Workaround.
Das war zumindest bei mir, was Crashs ausgelöst hat, wobei diese bei mir aber beim LocationChange-Event kamen.

nikosophi 19. Mär 2022 04:43

AW: LocationSensor Crash Android64
 
Kurze Info:
Mit Update von 11.0 auf 11.1 hat sich das Problem erledigt.
Der Locationssensor funktioniert wieder auch bei Android 12.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 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