2011-09-01 2 views

답변

4

Delphi XE2는 Mac에서 OSX 로의 배포를 지원합니다. iPhone에 배포하는 것은 apparently pretty easy이지만 최종 배포 도구로 XCode를 사용하는 것과 관련이 있습니다. Delphi는 iPhone 하드웨어 배포를 "공식적으로"지원하지 않기 때문에 특정 구성 요소가 포함되어 있는지 의심 스럽습니다.

면책 조항 : 방금 XE2를 다운로드 한 지 얼마되지 않아 지금까지 하나의 Mac 응용 프로그램 만 배포했습니다. 그래서 저는 전문가가 아닙니다.

편집 : Anders Ohlsson은 분명히 XE2 용 가속도계 구성 요소를 작성했습니다. 나는 그것을 시도하지 않았지만 here it is.

+0

호기심에 관한 downvote. 내가 이것에 대해 틀렸다면 나는 올바른 방법이 무엇인지 듣고 싶다. Windows에서 델파이로 시뮬레이션 한 직접적인 iOS 하드웨어 액세스의 일부는 진짜 치료법이 될 것입니다. – JosephStyons

+0

아래 소스 코드를 포함 시켰으며 템플릿을 사용하여 iOS 나침반/GPS 용 구성 요소를 작성했습니다. – Johan

0

요셉이 맞습니다. 필립 헤스는 델파이의 iOS 뉴스 그룹에 기여 및 기타 유용한 정보, 예를 들어되었습니다

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

하는 당신에게 도움이 될 수있다 : 그는 또한 여기에이 페이지를 가지고

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

. 현재 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. 
관련 문제