Comment accéder à la boussole iphone dans Firemonkey?Comment accéder à la boussole dans iOS?
Répondre
Voici une vidéo howto: http://blogs.embarcadero.com/ao/2011/10/13/39171
code source complet: http://cc.embarcadero.com/item/28536
Et un (court) article: http://edn.embarcadero.com/article/41715
Et voici le code source pour un composant de la boussole.
Je ne l'ai pas encore essayé, mais cela devrait fonctionner.
unit Compass;
{Based on Anders Ohlsson Firemonkey Compass example}
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
{$ENDIF}
interface
uses
SysUtils, Classes, FMX_Types
{$IFDEF FPC}
, iPhoneAll
{$ENDIF}
;
type
TUpdateEvent = TNotifyEvent;
TiOSGPSCompass = class(TFmxObject)
private
FLatitude: Double;
FLongitude: Double;
FAltitude: Double;
FHeading: Double;
FOnUpdate: TUpdateEvent;
UpdateNeeded: Boolean;
protected
procedure SetLatitude(value: Double);
procedure SetLongitude(value: Double);
procedure SetAltitude(value: Double);
procedure SetHeading(value: Double);
procedure Update;
public
constructor Create(AOwner: Classes.TComponent); override;
destructor Destroy; override;
published
property Latitude: Double read FLatitude;
property Longitude: Double read FLongitude;
property Altitude: Double read FAltitude;
property Heading: Double read FHeading;
property OnUpdate: TUpdateEvent read FOnUpdate write FOnUpdate;
end;
var
MyGPSCompass: TiOSGPSCompass = nil;
procedure Register;
implementation
{$IFDEF FPC}
uses
CoreLocation;
{$ENDIF}
{$IFDEF FPC}
type
MyCLController = objcclass(NSObject)
locationManager : CLLocationManager;
procedure locationManager_didUpdateToLocation_fromLocation(manager: CLLocationManager; newLocation, oldLocation: CLLocation); message 'locationManager:didUpdateToLocation:fromLocation:';
procedure locationManager_didUpdateHeading(manager: CLLocationManager; newHeading: CLHeading); message 'locationManager:didUpdateHeading:';
end;
var
Controller : MyCLController;
{$ENDIF}
{$IFDEF FPC}
procedure MyCLController.locationManager_didUpdateToLocation_fromLocation(manager: CLLocationManager; newLocation, oldLocation: CLLocation);
begin
if Assigned(MyGPSCompass) then begin
MyGPSCompass.SetLatitude(newLocation.coordinate.latitude);
MyGPSCompass.SetLongitude(newLocation.coordinate.longitude);
MyGPSCompass.SetAltitude(newLocation.altitude);
MyGPSCompass.Update;
end;
end;
{$ENDIF}
{$IFDEF FPC}
procedure MyCLController.locationManager_didUpdateHeading(manager: CLLocationManager; newHeading: CLHeading);
begin
if Assigned(MyGPSCompass) then begin
MyGPSCompass.FCompassHeading:= newHeading.magneticheading;
MyGPSCompass.Update;
end;
end;
{$ENDIF}
constructor TiOSGPSCompass.Create(AOwner: TComponent);
begin
inherited;
{$IFDEF FPC}
Controller := MyCLController.alloc.init;
Controller.locationManager := CLLocationManager.alloc.init;
Controller.locationManager.setDelegate(Controller);
Controller.locationManager.setDesiredAccuracy(kCLLocationAccuracyBestForNavigation);
Controller.locationManager.startUpdatingLocation;
Controller.locationManager.startUpdatingHeading;
{$ENDIF}
MyGPSCompass:= Self;
end;
destructor TiOSGPSCompass.Destroy;
begin
{$IFDEF FPC}
Controller.locationManager.release;
Controller.release;
{$ENDIF}
inherited;
end;
procedure TiOSGPSCompass.SetLatitude(value: Double);
begin
if (FLatitude <> value) then begin
FLatitude:= value;
UpdateNeeded:= True;
end;
end;
procedure TiOSGPSCompass.SetLongitude(value: Double);
begin
if (FLongitude <> value) then begin
FLongitude:= value;
UpdateNeeded:= True;
end;
end;
procedure TiOSGPSCompass.SetAltitude(value: Double);
begin
if (FAltitude <> value) then begin
FAltitude:= value;
UpdateNeeded:= True;
end;
end;
procedure TiOSGPSCompass.SetHeading(value: Double);
begin
if (FHeading <> value) then begin
FHeading:= value;
UpdateNeeded:= True;
end;
end;
procedure TiOSGPSCompass.Update;
begin
if (UpdateNeeded and Assigned(OnUpdate)) then OnUpdate(Self);
UpdateNeeded:= False;
end;
procedure Register;
begin
RegisterComponents('iOS', [TiOSGPSCompass]);
end;
end.
+1 Il serait bon cependant, d'avoir les parties pertinentes incluses dans votre réponse si cela est possible. – jpfollenius
@Smasher, je vais voir ce que je peux faire. – Johan
@Smasher, code source ajouté pour un composant de la boussole – Johan
- 1. accéder à la boussole iPhone avec JavaScript
- 2. Première application Android - Comment accéder à la boussole
- 3. Comment trouver la boussole dans une application Web iOS?
- 4. iOS: Création d'une boussole 3D
- 5. Flex Hero: Puis-je accéder à la boussole Android?
- 6. Comment accéder à mon JSON dans iOS
- 7. Utiliser la boussole à distance
- 8. Accéder à UITableViewCell depuis UIAlertView dans iOS
- 9. Comment afficher la boussole sur l'écran?
- 10. Comment accéder à l'URL sécurisée de ios
- 11. Comment accéder à la mémoire de téléphone de l'application - iOS
- 12. accéder à des contacts dans ios
- 13. Accéder à localStorage dans les applications iOS
- 14. Activer la boussole OSMDROID
- 15. Comment accéder à Google Docs dans une application Ios?
- 16. Comment obtenir la direction de la boussole
- 17. sur la boussole montre
- 18. Comment accéder à argc/argv dans une application iOS?
- 19. Comment accéder à l'accéléromètre iOS dans Delphi XE2?
- 20. comment utiliser boussole twitter bootstrap comme plan de boussole
- 21. Installation de la boussole
- 22. Boussole - Modification de la valeur par défaut de "boussole"
- 23. ios comment accéder au délégataire
- 24. comment ajouter une boussole à mapview
- 25. Comment pointer la boussole vers ma destination?
- 26. Accédez à la boussole de l'application webb avec Javascript
- 27. Comment spécifier line_comments dans la compilation de la boussole?
- 28. boussole main dans la main avec wordpress
- 29. colonnes imbriquées dans la boussole/sass
- 30. Faire pivoter deux images avec une boussole sur iOS
Je ne comprends pas, c'est quelque chose comme: je demande, je donne la réponse? – RBA
@RBA, je partage juste mon signet. J'espère que c'est utile. Le SO le permet, voir la FAQ. – Johan
En effet :) vous avez parfaitement raison, c'était la raison de vous donner un +1. À mon humble avis, cela devrait également être mis sur wiki parce que c'est une bonne question sur le développement iOS – RBA