FireMonkeyアプリケーションのTOrientationSensorでデバイスの傾きやコンパス方位を取得するには

TOrientationSensorコンポーネントのActiveプロパティをTrueにすると情報を取得します。

OrientationSensor1.Active := True;

OnSensorChoosingイベントで、使用するセンサを指定します。

次のコードでは、デバイスの傾きを取得できるセンサを調べて選択します。

procedure TForm1.OrientationSensor1SensorChoosing(Sender: TObject;
  const Sensors: TSensorArray; var ChoseSensorIndex: Integer);
var
  I: Integer;
begin
  for I := 0 to High(Sensors) do
  begin
    if TCustomOrientationSensor.TProperty.TiltX
      in TCustomOrientationSensor(Sensors[I]).AvailableProperties then
    begin
      ChoseSensorIndex := I;
      Exit;
    end;
  end;
  ChoseSensorIndex := 0;
end;

次のコードでは、コンパス方位を取得できるセンサを調べて選択します。

procedure TForm1.OrientationSensor2SensorChoosing(Sender: TObject;
  const Sensors: TSensorArray; var ChoseSensorIndex: Integer);
var
  I: Integer;
begin
  for I := 0 to High(Sensors) do
  begin
    if TCustomOrientationSensor.TProperty.HeadingX
      in TCustomOrientationSensor(Sensors[I]).AvailableProperties then
    begin
      ChoseSensorIndex := I;
      Exit;
    end;
  end;
  ChoseSensorIndex := 0;
end;

OnDataChangedイベントで、センサの情報を取得します。

次のコードでは、デバイスの傾きを表示します。

procedure TForm1.OrientationSensor1DataChanged(Sender: TObject);
begin
  LabelTiltX.Text := FloatToStr(OrientationSensor1.Sensor.TiltX);
  LabelTiltY.Text := FloatToStr(OrientationSensor1.Sensor.TiltY);
  LabelTiltZ.Text := FloatToStr(OrientationSensor1.Sensor.TiltZ);
end;

次のコードでは、コンパス方位を表示します。

procedure TForm1.OrientationSensor2DataChanged(Sender: TObject);
begin
  LabelHeadingX.Text := FloatToStr(OrientationSensor2.Sensor.HeadingX);
  LabelHeadingY.Text := FloatToStr(OrientationSensor2.Sensor.HeadingY);
  LabelHeadingZ.Text := FloatToStr(OrientationSensor2.Sensor.HeadingZ);
end;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください