2011-09-01 5 views

Répondre

4

Le déploiement sur un iPhone est apparently pretty easy, mais il implique toujours l'utilisation de XCode en tant qu'outil de déploiement final. Comme Delphi ne prend pas "officiellement" en charge le déploiement sur le matériel iPhone, je doute qu'ils aient inclus les composants qui lui sont spécifiques. Clause de non responsabilité: Je viens de télécharger XE2 il y a quelques heures, et j'ai seulement déployé une application mac jusqu'à présent (et cela a fonctionné à merveille). Donc je suis loin d'être un expert. Edit: Anders Ohlsson a apparemment écrit un composant accéléromètre pour XE2. Je n'ai pas essayé, mais here it is.

+0

Vous êtes curieux de connaître la downvote. Si j'ai tort à ce sujet, j'aimerais entendre ce que la bonne façon est. Une sorte d'accès direct au matériel iOS simulé de Delphi sur Windows serait un vrai régal. – JosephStyons

+0

J'ai inclus le code source ci-dessous et j'ai utilisé le modèle pour écrire un composant pour la boussole/GPS iOS. – Johan

0

Il y a un élément qui lit l'accéléromètre sur le blog Embarcadero:
http://edn.embarcadero.com/article/41748
Voici le lien de téléchargement du composant: http://cc.embarcadero.com/item/28609

Et voici le code source par Anders Ohlsson:
(je cela construire un composant pour le 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. 
Questions connexes