Registriert seit: 3. Mär 2006
264 Beiträge
Delphi 11 Alexandria
|
AW: Inclinometer3D Tilt-Werte auslesen
18. Aug 2017, 19:44
Ä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;
|
|
Zitat
|