Results 1 to 4 of 4

Thread: App loopt (na update) vast als gps positie gevonden wordt

  1. #1

    App loopt (na update) vast als gps positie gevonden wordt

    Na een update van mijn smartphone (Samsung Galaxy M22, met Andriod 12), werkt de App niet
    meer die gemaakt is met Delphi 10.4 (FMX) en gebruik maakt van de LocationSensor.
    De App werkte al vele maanden perfect, en nu werkt deze ineens niet meer.
    Ik heb geen idee wat deze update heeft gewijzigd waardoor het nu niet meer werkt.

    De App loopt vast op het moment dat de gps locatie gevonden wordt.

    Als test ben ik een nieuw project begonnen.
    Ik plaats alleen een LocationSensor op het form en zet deze met een button op Active.
    De App heb ik handmatig gemachtigd voor Locatie toegang.

    Als de App gestart is, druk ik op de Button om de Locatie sensor op Actief te zetten.
    Na enkele seconde stopt te App zonder dat ik een fout melding krijg.


    Wie kan hier iets over vertellen ?
    Last edited by MMSoft; 20-Jul-22 at 16:25.

  2. #2
    Ik bouw zelf geen apps, maar je lijkt niet de enige te zijn met dit probleem.
    De combinatie Android 12 + Delphi 10.4 + location sensolijkt bij meer mensen problemen te geven.
    Delphi 11 zou het probleem oplossen.
    1+1=b

  3. #3
    Google-resultaat 2 beschrijft hetzelfde. Die linkt naar QC RSP-35804. Daar wordt ook een work-around gegeven:

    Quote Originally Posted by Marc Schwarzkopf
    We have found a workaround that works for us on both Android 11 and Android 12.
    We have adapted the "JLocationListener" interface from the file Androidapi.JNI.Location.pas" as follows:

    Delphi Code:
    1. JLocationListener = interface(IJavaInstance)
    2.     ['{D1CF3FB5-3BCB-4959-98D7-BD4D8F93D839}']
    3.     procedure onLocationChanged(location: JObject); cdecl;
    4.     procedure onProviderDisabled(provider: JString); cdecl;
    5.     procedure onProviderEnabled(provider: JString); cdecl;
    6.     procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl;
    7.   end;
    and have modified the "TLocationListener" class in the "System.Android.Sensors.pas" file as follows:

    Delphi Code:
    1. TLocationListener = class(TJavaLocal, JLocationListener)
    2.   private
    3.     FLocationSensor: TUIAndroidLocationSensor;
    4.   public
    5.     constructor Create(ALocationSensor: TUIAndroidLocationSensor);
    6.     procedure onLocationChanged(P1: JObject); overload; cdecl;
    7.     procedure onLocationChanged(P1: JLocation); overload; cdecl;
    8.     procedure onLocationChanged(P1: JArrayList); overload; cdecl;
    9.     procedure onStatusChanged(P1: JString; P2: Integer; P3: JBundle); cdecl;
    10.     procedure onProviderEnabled(P1: JString); cdecl;
    11.     procedure onProviderDisabled(P1: JString); cdecl;
    12.   end;
    Finally, we have added the following procedures:

    Delphi Code:
    1. procedure TUIAndroidLocationSensor.TLocationListener.onLocationChanged(P1: JObject);
    2.   begin
    3.     if TJNIResolver.IsInstanceOf(P1, TJArrayList.GetClsID) then
    4.       onLocationChanged(TJArrayList.Wrap(P1))
    5.     else if TJNIResolver.IsInstanceOf(P1, TJLocation.GetClsID) then
    6.       onLocationChanged(TJLocation.Wrap(P1));
    7.   end;
    8.  
    9.   procedure TUIAndroidLocationSensor.TLocationListener.onLocationChanged(P1: JArrayList);
    10.   begin
    11.     onLocationChanged(TJLocation.Wrap(P1.get(P1.size-1)))
    12.   end;
    Het is dan wel handig om die bestanden te kopiëren naar je project, en specifieke maatregelen te nemen om ervoor te zorgen dat je ook die versie gebruikt.
    Ik heb zelf weleens een dummy-constante gemaakt in zo'n aangepaste unit, en die op een nietszeggende regel gebruikt in m'n project. Zo wist ik in ieder geval zeker dat ik niet een versie van het project kon verspreiden die gebaseerd was op de onaangepaste units.
    1+1=b

  4. #4
    Perfect, het werkt nu weer goed !!!

    Bedankt !!!
    Last edited by MMSoft; 21-Jul-22 at 08:15.

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
  •