Results 1 to 9 of 9

Thread: OrientationSensor werkt niet meer nadat de LocationSensor is gebruikt.

  1. #1

    OrientationSensor werkt niet meer nadat de LocationSensor is gebruikt.

    Ik kom een heel vreemd probleem tegen.
    De OrientationSensor werkt niet meer nadat ik in een andere eigengemaakte App de LocationSensor gebruikt heb.

    Het lijkt erop dat het gebruik van de LocationSensor iets in het geheugen van mijn Samsung s7 aantast zodat de OrientationSensor niet meer kan werken.
    Ik heb een paar compass app's geinstalleerd en die werken dan ook niet meer.

    Pas nadat ik: Instellingen > Algemeen beheer > Resetten > Instellingen resetten, heb uitgevoerd werkt de OrientationSensor en de compass app's weer.

    Wie kan hier iets over vertellen ?

  2. #2
    Dit is al voldoende om de OrientationSensor niet meer te laten werken in een andere App.
    Ik gebruik XE10.1 Update 2.
    Gebruik ik de LocationSensor hier wel op de juiste manier ?
    Want zelfs als ik deze gehele LocationSensor1LocationChanged routine verwijder en dus alleen de LocationSensor activeer geeft dat soms al problemen voor de OrientationSensor.
    Als compass App gebruik ik Kompas 360 Pro om te testen.

    Delphi Code:
    1. unit Unit1;
    2.  
    3. interface
    4.  
    5. uses
    6.   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
    7.   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
    8.   FMX.Controls.Presentation, FMX.StdCtrls, System.Sensors,
    9.   System.Sensors.Components;
    10.  
    11. type
    12.   TForm1 = class(TForm)
    13.     Label1: TLabel;
    14.     LocationSensor1: TLocationSensor;
    15.     procedure LocationSensor1LocationChanged(Sender: TObject; const OldLocation,
    16.       NewLocation: TLocationCoord2D);
    17.     procedure FormActivate(Sender: TObject);
    18.   private
    19.     { Private declarations }
    20.   public
    21.     { Public declarations }
    22.   end;
    23.  
    24. var
    25.   Form1: TForm1;
    26.  
    27. implementation
    28.  
    29. {$R *.fmx}
    30.  
    31. procedure TForm1.FormActivate(Sender: TObject);
    32. begin
    33.  LocationSensor1.Active:= True;
    34. end;
    35.  
    36. procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
    37.   const OldLocation, NewLocation: TLocationCoord2D);
    38. begin
    39.  //Er wordt niets gedaan in deze routine, maar dit is al voldoende om het Compass niet meer te laten werken.
    40. end;
    41.  
    42. end.

  3. #3
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    En als je nou (ik heb zelf helaas geen XE10) in TLocationSensor kijkt wat er precies gebeurd, vlak voor en
    nadat de OnLocationChanged()-event wordt aangeroepen?

    Wellicht wordt er *iets* gereserveerd (een handle, een lock, een ...), welke na afloop niet vrijgegeven wordt?
    TMemoryLeak.Create(Nil);

  4. #4
    Code:
    procedure TForm1.FormActivate(Sender: TObject);
    begin
     LocationSensor1.Active:= True;
    end;
    Wanneer zet je .Active op false?
    Mogelijk heeft dit er niet mee te maken, maar je moet wel wijzigingen ongedaan maken en de zaak netjes achter laten ...

  5. #5
    Quote Originally Posted by MaartenW View Post
    Code:
    procedure TForm1.FormActivate(Sender: TObject);
    begin
     LocationSensor1.Active:= True;
    end;
    Wanneer zet je .Active op false?
    Mogelijk heeft dit er niet mee te maken, maar je moet wel wijzigingen ongedaan maken en de zaak netjes achter laten ...
    Ten eerste zou het natuurlijk een probleem zijn op welk moment je de zaakjes netjes wilt sluiten. Want in Android kan je app ook direct gesloten worden.

    Maar ook met dit verlies je de sensor:
    Delphi Code:
    1. procedure TForm11.FormActivate(Sender: TObject);
    2. begin
    3.    LocationSensor1.Active:= true;
    4.    LocationSensor1.Active:= false;
    5. end;

    Ik ben blij dat ik niet met de combinatie Delphi/Android hoef te doen.

  6. #6
    Het gaat na het gebruiken van LocationDemoProject.apk ook mis.
    En dit is de standaard demo in Delphi zelf.

    Overigens is het alleen de compass sensor die je kwijtraakt. De andere sensoren (zoals location e.d.) die blijven het wel doen.

    Waarschijnlijk zijn er weinig mensen die de compass sensor in Delphi gebruiken.

  7. #7
    Ik heb dit nog even toegevoegd maar ook dat geeft geen verschil.

    Delphi Code:
    1. procedure TForm1.FormDestroy(Sender: TObject);
    2. begin
    3.  LocationSensor1.Active:= False;
    4. end;

  8. #8
    Het is dus een bug in XE10.1.
    Zou er een omweg zijn om dit toch voor elkaar te krijgen ?

  9. #9
    Ik gebruik nu XE10.3, en in deze versie werkt de OrientationSensor wel samen met de LocationSensor !

    Alleen als je de OrientationSensor Inactief maakt:
    Code:
    OrientationSensor1.Active := False;
    Dan is deze ook Inactief en dat blijft deze ook, ook na:
    Code:
    OrientationSensor1.Active := True;
    Pas nadat ik de device opnieuw opgestart had werkte de OrientationSensor weer.

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
  •