2011-09-01 17 views

答えて

4

デルファイXE2は、Mac OSXへの展開をサポートしています。 iPhoneにデプロイするのはapparently pretty easyですが、それでもXcodeを最終的なデプロイメントツールとして使用します。 DelphiはiPhoneハードウェアへの展開を「正式に」サポートしていないため、特定のコンポーネントが含まれているかどうかは疑問です。

免責事項:私は数時間前にXE2をダウンロードしたばかりですが、これまでにMacアプリケーションを1つしか配備していませんでした。だから私は専門家からは遠い。

編集:Anders Ohlssonは明らかにXE2の加速度計コンポーネントを書いています。私はそれを試していないが、here it is

+0

奇妙なdownvoteについて。私がこれについて間違っているなら、正しい方法が何であるか聞いてみたい。 Windows上のDelphiからのシミュレートされた直接的なiOSハードウェアアクセスのいくつかは本当の扱いになります。 – JosephStyons

+0

私は以下のソースコードを含んでおり、iOSコンパス/ GPSのコンポーネントを記述するためにテンプレートを使用しました。 – Johan

0

Josephは正しいです。フィリップ・ヘスは、例えば、デルファイのiOSニュースグループへの貢献、およびその他の有用な情報がされています:

https://forums.embarcadero.com/message.jspa?messageID=390713&tstart=125

を彼はまた、ここで、このページがあります:あなたに役立つかもしれ

http://web.me.com/macpgmr/ObjP/Xcode4/ObjP_Intro.html

を。私は現在、CoreLocationサービス(他のものの中で)を使用するために、すべてを見ています。間違いなく心の弱い人のためではありません。

0

エンバカデロのブログに加速度計を読み込むコンポーネントがあります:
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. 
関連する問題