Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inclinometer3D Tilt-Werte auslesen (https://www.delphipraxis.net/193589-inclinometer3d-tilt-werte-auslesen.html)

derseitzer 17. Aug 2017 15:55

Inclinometer3D Tilt-Werte auslesen
 
Hey Leute,

Ich versuche nun zum dritten und letzten mal mein Glück. ich bekomme von meinem Smartphone vom Inclinometer nur Nullen zurück und ich bin mir nun fast sicher, dass es ein Problem mit Delphi gibt.. Hat schon jemand ein programm mit diesem Inclinometer geschrieben bzw. hat jemand mal etwas anderes außer 0 zurückbekommen?

MFG

TiGü 18. Aug 2017 08:35

AW: Inclinometer3D Tilt-Werte auslesen
 
Ohne deine vorigen Bemühungen im Detail nach verfolgt zu haben, die üblichen Clinometer bzw. Inclinometer-Apps aus dem Appstore zeigen dir was an?

Rollo62 18. Aug 2017 08:56

AW: Inclinometer3D Tilt-Werte auslesen
 
Bin gerade am generellen Testen Rx1021, habe mal schnell nachgeschaut,
mit der Demo: SensorInfo.app

iOS: iPhone 6S
- MotionDetection: OK
- Acceleration3D: OK
- Inclinometer§D: OK
- Compass3D: OK

Android: Samsung S7 Edge (Android 6.x.x)
- MotionDetection: nicht OK (0,0,0)
- Acceleration3D: nicht OK (0,0,0)
- GravityAccelerometer3D: nicht OK (0,0,0)
- Gyrometer3D: OK
- LinearAccelerometer3D: nicht OK (0,0,0)
- Compass3D: OK

Das geht aber auch nicht mit anderen Tools aus dem PlayStore, scheint also ein Android-Problem zu sein.

Rollo

Ydobon 18. Aug 2017 10:32

AW: Inclinometer3D Tilt-Werte auslesen
 
Wie bereits in dem anderen Thread geschrieben, dein Quelltext funktioniert bei mir mit Tokyo und meinen LG-Handys ohne Probleme.
Trotz Releaseversion und Zippen übersteigt die Größe die hier für Anhänge mögliche (wow Emba), ich habe es daher zeitweilig hier abgelegt. Das könnte dann wenigsten zeigen, ob es an Seattle liegt oder dein Handy generell Probleme mit Delphi hat.

derseitzer 18. Aug 2017 16:27

AW: Inclinometer3D Tilt-Werte auslesen
 
Ydobon und diese Applikation, die du verlinkt hast, funktioniert bei dir auf deinem Nicht-Android-Handy? Dann vielen vielen Dank! Weil dann ist es nun sicher, dass es nicht an mir liegt, sondern an Android bzw. Delphi. Dankeschön! :)

Ydobon 18. Aug 2017 18:44

AW: Inclinometer3D Tilt-Werte auslesen
 
Ähm? Es funktioniert auf meinem Android-Handys, nicht auf meinen Nicht-Android-Handys. Ich dachte, du versuchst es mit einem S7 Edge.

Um Delphi mal halbwegs auszuschalten, wie wäre es etwas Low Löffeliger also direkt mit dem NDK?

Delphi-Quellcode:
uses ..., Androidapi.Looper, Androidapi.Sensor;

var
  SensorManager: PASensorManager;
  ASensor, MSensor: PASensor;
  queue: PASensorEventQueue;

procedure TForm1.Switch1Click(Sender: TObject);
var Looper: PALooper;
begin
  if Timer2.Enabled then
  begin
    Timer2.Enabled:=false;
    ASensorEventQueue_disableSensor(queue, ASensor);
    ASensorEventQueue_disableSensor(queue, MSensor);
    ASensorManager_destroyEventQueue(SensorManager, queue);
  end else
  begin
    sensormanager:=ASensorManager_getInstance;
    MSensor:=ASensorManager_getDefaultSensor(SensorManager, ASENSOR_TYPE_MAGNETIC_FIELD);
    ASensor:=ASensorManager_getDefaultSensor(SensorManager, ASENSOR_TYPE_ACCELEROMETER);
    Looper:=ALooper_forThread;
    if not Assigned(Looper) then Looper:=ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
    queue:=ASensorManager_createEventQueue(SensorManager, Looper, 1, Nil, Nil);
    ASensorEventQueue_enableSensor(queue, MSensor);
    ASensorEventQueue_setEventRate(queue, MSensor, 5000);
    ASensorEventQueue_enableSensor(queue, ASensor);
    ASensorEventQueue_setEventRate(queue, ASensor, 5000);
    Timer2.Enabled:=true;
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var event: ASensorEvent;
begin
  Memo1.Lines.Clear;
  while ASensorEventQueue_getEvents(queue, @event, 1)>0 do
  begin
    if event.__type=ASENSOR_TYPE_MAGNETIC_FIELD then
    begin
      Memo1.Lines.Add('Mag '+FloatToStr(event.magnetic.x));
      Memo1.Lines.Add('Mag '+FloatToStr(event.magnetic.y));
      Memo1.Lines.Add('Mag '+FloatToStr(event.magnetic.z));
    end;
    if event.__type=ASENSOR_TYPE_ACCELEROMETER then
    begin
      Memo1.Lines.Add('Acc '+FloatToStr(event.acceleration.x));
      Memo1.Lines.Add('Acc '+FloatToStr(event.acceleration.y));
      Memo1.Lines.Add('Acc '+FloatToStr(event.acceleration.z));
    end;
  end;
end;

derseitzer 18. Aug 2017 19:00

AW: Inclinometer3D Tilt-Werte auslesen
 
Eventuell wurde das Inklinometer dann mit Tokyo gepatcht? Weil mit meinem S7 und Berlin funktioniert dein Programm nicht.
Und der Code lässt die App bei mir sofort wieder schließen.

Ydobon 18. Aug 2017 19:14

AW: Inclinometer3D Tilt-Werte auslesen
 
Ich hatte doch die APK mit eingepackt, wenn die bei dir funktionieren sollte, dann liegt es an Berlin. Aber im Moment sieht es irgendwie nach Problemen zwischen Samsung und Delphi aus.

Hattest du im Objektinspektor den Timer deaktiviert? Wenn gleich am Anfang etwas nicht existierendes gelöscht wird, könnte es zum Absturz kommen.

derseitzer 18. Aug 2017 19:19

AW: Inclinometer3D Tilt-Werte auslesen
 
Ja der Timer war aktiviert, jetzt funktioniert deine zweite App :) Aber das sind doch keine Inklinometer-Werte richtig?

Ydobon 18. Aug 2017 19:32

AW: Inclinometer3D Tilt-Werte auslesen
 
Das ist das Problem bei der Sache, daraus wird die Inklination berechnet. Leider sind die Hilfsfunktionen wohl nur im SDK enthalten, so dass man es selbst ausrechnen müsste.
https://developer.android.com/refere...20float[])

Oder schau dir nochmal den Link von Rollo62 im anderen Thread an.


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