AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi-Sensoren-Motionsensor wie aktivieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi-Sensoren-Motionsensor wie aktivieren?

Ein Thema von derseitzer · begonnen am 31. Mai 2017 · letzter Beitrag vom 1. Jun 2017
Antwort Antwort
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Delphi-Sensoren-Motionsensor wie aktivieren?

  Alt 31. Mai 2017, 16:17
Hallo Leute,
kurz vorab meine Frage: wie aktiviert man den Motionsensor für ein Samsung Galaxy S7 Edge? Hier warum ich diese einstellung suche:

Ich schreibe an einer Projektarbeit über Sensoren im Handy und brauche dringend Hilfe!

ich versuche gerade (und ich bin natürlich schon viel zu spät dran ) alle Sensoren, die für die Bewegung eines Objektes wichtig sind, zu bekommen.
Habe es so mal auf einem Formular mit ein paar probiert:

Code:
Label1.Text := FloatToStr(360*MotionSensor1.Sensor.accelerationX);
Label2.text := FloatToStr(360*MotionSensor1.Sensor.accelerationY);
Label3.text := FloatToStr(360*MotionSensor1.Sensor.accelerationZ);

Label4.text := FloatToStr(MotionSensor1.Sensor.AngleAccelX);
Label5.text := FloatToStr(MotionSensor1.Sensor.AngleAccelY);
Label6.text := FloatToStr(MotionSensor1.Sensor.AngleAccelZ);

Label7.text := FloatToStr(MotionSensor1.Sensor.Motion);
Label8.text := FloatToStr(MotionSensor1.Sensor.Speed);

Label9.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingX));
Label10.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingY));
Label11.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingZ));

Label12.Text := FloatToStr(OrientationSensor1.Sensor.TiltX);
Label13.Text := FloatToStr(OrientationSensor1.Sensor.TiltY);
Label14.Text := FloatToStr(OrientationSensor1.Sensor.TiltZ);

Label15.Text := FloatToStr(OrientationSensor1.Sensor.DistanceX);
Label16.Text := FloatToStr(OrientationSensor1.Sensor.DistanceY);
Label17.Text := FloatToStr(OrientationSensor1.Sensor.DistanceZ);
Ich bekomme für diese Befehle einen guten Wert(nicht verwirren lassen von dem vorfaktor und dem round): (dieser Sensor benutzt den Kompass, also magnetischen Nord- und Süpol)
Code:
Label9.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingX));
Label10.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingY));
Label11.Text := IntToStr(round(8*OrientationSensor1.Sensor.HeadingZ));
Ich bekomme für diese Befehle 0:
Code:
Label1.Text := FloatToStr(360*MotionSensor1.Sensor.accelerationX);
Label2.text := FloatToStr(360*MotionSensor1.Sensor.accelerationY);
Label3.text := FloatToStr(360*MotionSensor1.Sensor.accelerationZ);
Für alles andere bekomme ich "NAN", also die funktionieren eben nicht.

Nun meine Frage:
Eigentlich sollte ich mit dem motionsensor (der ja funktioniert) Werte bekommen, aber ich bekomme nur 0 zurück.. Muss ich den erst einschalten?
Ich habe gesehen, dass andere Apps von anderen Programmierern ihre Motionsensor programme ebenfalls mit: Label1.Text := FloatToStr(MotionSensor1.Sensor.accelerationX);
schreiben, aber diese Apps funktionieren bei mir AUCH nciht.. ich muss diesen Sensor wohl irgendwo aktivieren aber wo? ich besitze ein Samsung Galaxy S7 Edge.

Ich würde mich sehr über eine hilfreiche Antowrt freuen

Edit: die TiltX, TiltY und TiltZ Befehler sollten auch Werte zurückgeben aber da bekomme ich "NAN" zurück also ist anscheinend garnicht erreichbar? Habe mir mal eine App über Sensoren runtergeladen.. eigentlich sollten alle Sensoren funktionsbereit sein..
Auch das hier
http://docwiki.embarcadero.com/CodeE...roscope_Sample
funktioniert bei mir nicht.. bekomme 0,0,0,0,0 zurück..

Geändert von derseitzer (31. Mai 2017 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi-Sensoren-Motionsensor wie aktivieren?

  Alt 1. Jun 2017, 02:26
Gute Frage,

habs gerade gecheckt, bei mir geht auch nur noch der Gyro und der Compass Sensor.
Acceleration, Accel3D und Tilt zeigen 0.

Bei Galaxy S5 gings noch.
Hab noch nicht upgedatet auf Android 7 ...

Rollo
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi-Sensoren-Motionsensor wie aktivieren?

  Alt 1. Jun 2017, 12:34
Erinnert mich an meinen Versuch für Delphi ein extra gut mit Sensoren ausgestattetes Smartphone aus Fernost zu benutzen. Die Apps aus dem Play Store funktionierten richtig, aber sobald ich das erste mal mit einer Delphianwendung (einschließlich der Demos) auf das Gerät zugriff, waren die Sensoren weg - auch für die anderen Apps. Selbst nach mehrfachen Neustarts konnten sie danach teilweise nicht mehr verwendet werden. Und das bei beiden Geräten, die ich versucht hatte. Bei einem Markenhandy ist das aber bisher noch nicht passiert. Samsung sollte dann eigentlich keine Probleme mit Delphi habe.

Für den Start müssten die Sensoren die Eigenschaft Active haben.

Ich habe mal ein kleines Beispiel angehängt(hauptsächlich von hier geklaut - nicht über das "writeln" wundern). Damit sollte man eigentlich grob sehen können, welcher Sensor vorhanden ist und reagiert.
Ist allerdings auch ein Monument für Embas Faulheit (System.Sensors). Der größte Teil der Abfragen ist daher sinnlos.
Delphi-Quellcode:
function TCustomSensor.GetCustomData(const Data): Variant;
begin
  Result := Null;
end;

function TCustomSensor.GetCustomProperty(const Prop): Variant;
begin
  Result := Null;
end;

function TCustomSensor.GetHasCustomData(const Data): Boolean;
begin
  Result := False;
end;

function TCustomSensor.GetHasCustomProperty(const Prop): Boolean;
begin
  Result := False;
end;

function TCustomSensor.GetSensorProperty(Prop: TProperty): string;
begin
  Result := '';
end;
Angehängte Dateien
Dateityp: 7z GinFo.7z (7,7 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi-Sensoren-Motionsensor wie aktivieren?

  Alt 1. Jun 2017, 21:54
Dankesehr für den Testcode.
Der läuft allerdings auch nicht.
Es kommt X,Y,Z immer 0 zurück.

Wenn ich in den Android-Testmodus gehe, mit Telefon "*#0*#", dann funktionieren die Accelerometer ebenfalls nicht.
X,Z,Z 0,0,0 oder manchmal auch 0,0,90, jedenfalls keine Änderung der Werte.

Update:
Toll was war das denn ?
Habs jetzt neu gebootet, dann kommen die Werte im Phonetest *#0*# und auch in dem Emba SensorInfo Demo.
Mit deinem Testcode kommt leider immer noch 0,0,0 vermotlich weil LastValue nicht wirklich gesetzt wird.
Ich habe mir die Unterschiede zu SensorInfo noch nicht angeschaut.

Rollo

Geändert von Rollo62 ( 1. Jun 2017 um 21:59 Uhr)
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Delphi-Sensoren-Motionsensor wie aktivieren?

  Alt 1. Jun 2017, 22:58
Habe ein klein wenig selber die Lösung gefunden aber nur für mein Gyrometer. das hat mir immer nur 0 zurückgegeben und ich habe es mit dem Code siehe unten gelöst. Habe es noch nich mit tilt getestet und werde dieses wochenende auch leider nicht mehr dazukommen >.< vllt. wollt ihrs ja probieren Ich werde es auf jedenfall auch noch probieren
Code:
procedure TFormMain.Form3DCreate(Sender: TObject);
var
Sensormanager: TSensorManager;
Sensors: TSensorArray;
Sensor: TCustomSensor;
begin
//Sphere1.MaterialSource:= Menu.TextureMaterialSource1;
Sensormanager := TSensormanager.Current;
Sensormanager.Activate;
Sensors:= Sensormanager.GetSensorsByCategory(TSensorCategory.Motion);
for Sensor in Sensors do
  if TCustomMotionSensor(Sensor).SensorType = TMotionSensortype.Gyrometer3D then begin
  FSensor:=TCustomMotionsensor(Sensor);
  end;
FSensor.Start;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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