Delphi XE2を使用してiOSの加速度計にアクセスするにはどうすればよいですか?Delphi XE2のiOS加速度計にアクセスするには?
IDEで調べてみましたが、コンポーネントが見つかりませんでした。
Delphi XE2を使用してiOSの加速度計にアクセスするにはどうすればよいですか?Delphi XE2のiOS加速度計にアクセスするには?
IDEで調べてみましたが、コンポーネントが見つかりませんでした。
デルファイXE2は、Mac OSXへの展開をサポートしています。 iPhoneにデプロイするのはapparently pretty easyですが、それでもXcodeを最終的なデプロイメントツールとして使用します。 DelphiはiPhoneハードウェアへの展開を「正式に」サポートしていないため、特定のコンポーネントが含まれているかどうかは疑問です。
免責事項:私は数時間前にXE2をダウンロードしたばかりですが、これまでにMacアプリケーションを1つしか配備していませんでした。だから私は専門家からは遠い。
編集:Anders Ohlssonは明らかにXE2の加速度計コンポーネントを書いています。私はそれを試していないが、here it is。
Josephは正しいです。フィリップ・ヘスは、例えば、デルファイのiOSニュースグループへの貢献、およびその他の有用な情報がされています:
https://forums.embarcadero.com/message.jspa?messageID=390713&tstart=125
を彼はまた、ここで、このページがあります:あなたに役立つかもしれ
http://web.me.com/macpgmr/ObjP/Xcode4/ObjP_Intro.html
を。私は現在、CoreLocationサービス(他のものの中で)を使用するために、すべてを見ています。間違いなく心の弱い人のためではありません。
エンバカデロのブログに加速度計を読み込むコンポーネントがあります:
http://edn.embarcadero.com/article/41748
ここでは、コンポーネントのダウンロードリンクです:http://cc.embarcadero.com/item/28609
そしてここでは、アンダース・オールソンにより、ソースコードは次のとおりです。
(私はこれを使用は、 GPS/Compassのコンポーネントを構築する)。
unit Accelerometer;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
{$ENDIF}
interface
uses
SysUtils, Classes, FMX_Types
{$IFDEF FPC}
, iPhoneAll
{$ENDIF}
;
type
TAccelerateEvent = procedure(x,y : Double) of object;
TiOSAccelerometer = class(TFmxObject)
private
FOnAccelerate: TAccelerateEvent;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property OnAccelerate: TAccelerateEvent read FOnAccelerate write FOnAccelerate;
end;
{$IFDEF FPC}
const
kAccelerometerFrequency = 100.0; // Hz
{$ENDIF}
{$IFDEF FPC}
type
UIAcceleration = objcclass external (NSObject)
public
function timestamp: NSTimeInterval; message 'timestamp';
function x: UIAccelerationValue; message 'x';
function y: UIAccelerationValue; message 'y';
function z: UIAccelerationValue; message 'z';
end;
{$ENDIF}
{$IFDEF FPC}
type
AccDelegate = objcclass(NSObject)
procedure accelerometer_didAccelerate(accelerometer: UIAccelerometer; acceleration: UIAcceleration); message 'accelerometer:didAccelerate:';
end;
{$ENDIF}
{$IFDEF FPC}
var
AccDelegatVar: AccDelegate;
{$ENDIF}
var
MyAccelerometer: TiOSAccelerometer;
procedure Register;
implementation
{$IFDEF FPC}
procedure AccDelegate.accelerometer_didAccelerate(accelerometer: UIAccelerometer; acceleration: UIAcceleration);
begin
if Assigned(MyAccelerometer) then
if Assigned(MyAccelerometer.FOnAccelerate) then
MyAccelerometer.FOnAccelerate(acceleration.x,acceleration.y);
end;
{$ENDIF}
constructor TiOSAccelerometer.Create(AOwner: TComponent);
begin
inherited;
{$IFDEF FPC}
UIAccelerometer.sharedAccelerometer.setUpdateInterval(1.0/kAccelerometerFrequency);
AccDelegatVar := AccDelegate.alloc;
UIAccelerometer.sharedAccelerometer.setDelegate(AccDelegatVar);
{$ENDIF}
end;
procedure Register;
begin
RegisterComponents('iOS', [TiOSAccelerometer]);
end;
end.
奇妙なdownvoteについて。私がこれについて間違っているなら、正しい方法が何であるか聞いてみたい。 Windows上のDelphiからのシミュレートされた直接的なiOSハードウェアアクセスのいくつかは本当の扱いになります。 – JosephStyons
私は以下のソースコードを含んでおり、iOSコンパス/ GPSのコンポーネントを記述するためにテンプレートを使用しました。 – Johan