Je ne peux pas sembler trouver une documentation en ligne à ce sujet, et ce que je suis googler me donne beaucoup d'informations contradictoires ...Quelles sont les plages de l'accélérateur sur l'iPhone?
Répondre
De iphonedevsdk.com:
Les accéléromètres utilisés dans le premier et les iPhones de deuxième génération (et I supposent également les touches iPod) fonctionnent en deux modes: +/- 2 g, et +/- 8 g. (En fait, comme vous avez observé, ils rapport accélérations un peu en dehors la plage nominale. La précision est pas dehors de cette plage doté de caractéristiques techniques, cependant.)
Apple les exploite dans le +/- 2 g en mode . Il ya un compromis: La résolution actuelle est nominalement 0,018 g, selon la fiche technique (bien que mon iPhone de première génération utilise 0.018168604, selon une version modifiée de AccelerometerGraph). Dans le mode +/- 8 g, la résolution serait quatre fois plus grossière. Je suppose que Apple a décidé que la résolution plus fine serait plus utile que la gamme plus large. (Je préfère voir plus fine résolution que 0,018 g. Donc, ni de nous est pleinement satisfait.)
Vous ne pouvez pas changer le mode avec une fonction publié des API. Depuis ils passent l'accélération en tant que double, ils pourraient théoriquement permettre un changement de mode, et simplement regarder le mode lors de la remise à l'échelle de la valeur A/D, avant de reporter l'accélération. (Le endroit évident pour définir le mode serait dans l'appel qui met en place l'application pour recevoir des informations accéléromètre .) Cependant, pour la compatibilité ascendante , le système d'exploitation devrait définir le mode accéléromètre à +/- 2 g au début de l'application. Et aucun des processus d'arrière-plan pourrait être autorisé à définir le mode accéléromètre .
J'ai créé l'application suivante pour essayer de tester les gammes ...
UIAccelerometer *objAccelerometer;
UILabel *lblxmin, *lblxmax, *lblymin, *lblymax, *lblzmin, *lblzmax;
UILabel *lblxnow, *lblynow, *lblznow;
float xmin = 0.0, xmax = 0.0, ymin = 0.0, ymax = 0.0, zmin = 0.0, zmax = 0.0, xnow = 0.0, ynow = 0.0, znow = 0.0;
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
//NSLog (@"%f, %f, %f", acceleration.x, acceleration.y, acceleration.z);
xnow = acceleration.x;
ynow = acceleration.y;
znow = acceleration.z;
if (xnow < xmin) { xmin = xnow; }
if (ynow < ymin) { ymin = ynow; }
if (znow < zmin) { zmin = znow; }
if (xnow > xmax) { xmax = xnow; }
if (ynow > ymax) { ymax = ynow; }
if (znow > zmax) { zmax = znow; }
lblxmin.text = [NSString stringWithFormat:@"%f", xmin];
lblymin.text = [NSString stringWithFormat:@"%f", ymin];
lblzmin.text = [NSString stringWithFormat:@"%f", zmin];
lblxmax.text = [NSString stringWithFormat:@"%f", xmax];
lblymax.text = [NSString stringWithFormat:@"%f", ymax];
lblzmax.text = [NSString stringWithFormat:@"%f", zmax];
lblxnow.text = [NSString stringWithFormat:@"%f", xnow];
lblynow.text = [NSString stringWithFormat:@"%f", ynow];
lblznow.text = [NSString stringWithFormat:@"%f", znow];
}
-(void) invokeAccelerometer {
objAccelerometer = [UIAccelerometer sharedAccelerometer];
objAccelerometer.delegate = self;
objAccelerometer.updateInterval = (1.0/10.0);
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
lblxmin = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 40)];
lblxnow = [[UILabel alloc] initWithFrame:CGRectMake(100, 10, 100, 40)];
lblxmax = [[UILabel alloc] initWithFrame:CGRectMake(200, 10, 100, 40)];
lblymin = [[UILabel alloc] initWithFrame:CGRectMake(10, 60, 100, 40)];
lblynow = [[UILabel alloc] initWithFrame:CGRectMake(100, 60, 100, 40)];
lblymax = [[UILabel alloc] initWithFrame:CGRectMake(200, 60, 100, 40)];
lblzmin = [[UILabel alloc] initWithFrame:CGRectMake(10, 110, 100, 40)];
lblznow = [[UILabel alloc] initWithFrame:CGRectMake(100, 110, 100, 40)];
lblzmax = [[UILabel alloc] initWithFrame:CGRectMake(200, 110, 100, 40)];
[self.view addSubview:lblxmin];
[self.view addSubview:lblxnow];
[self.view addSubview:lblxmax];
[self.view addSubview:lblymin];
[self.view addSubview:lblynow];
[self.view addSubview:lblymax];
[self.view addSubview:lblzmin];
[self.view addSubview:lblznow];
[self.view addSubview:lblzmax];
[self invokeAccelerometer];
[super viewDidLoad];
}
Le problème est, quand je tourne mon iPod le long des axes horizontal/vertical, puis retournez-le, je obtenir des valeurs telles que:
xmin -1,271802
Xmax 1,180959
ymin -1,344477
ymax 1,108285
zmin -2,30713
zmax 2,325581
Si je prends l'iPod et secouer le diable hors de lui, je reçois ...
x -2,325581 à 2,307413
y -2,325581 à 2,307413
z -2,307413 à 2,325581
Toutes les idées ce qu'il mesure?
Le meilleur que je suis venu avec est:
axe vertical
x = -1 si incliné vers la gauche (< |)
x = 1 si incliné sur toute la vers la droite (|>)
- où < est la façon dont l'écran est confronté, et | est le fond de l'iPod
y ~ -1 si l'écran est face à vous, perpendiculaire au sol ("debout")
y ~ 1 si éloigné de vous (et à l'envers)
L'application aGauge affiche ces données brutes provenant de l'accéléromètre lorsque vous déplacez l'appareil. Il peut également vous aider à trouver le seuil "flip" pour votre appareil.
- 1. Quelles sont les modifications empilables?
- 2. Quelles sont les bonnes ressources pour apprendre sur les génériques?
- 3. Quelles sont les commandes importantes de Ruby?
- 4. Quelles sont les fonctionnalités cachées de Maven2?
- 5. Quelles sont les ressources à connaître sur le droit d'auteur?
- 6. Quelles sont les limites du refactoring?
- 7. Quelles sont les causes d'une erreur fsockopen()?
- 8. Quelles sont les conséquences sur les performances de l'utilisation « aide » sur sqlConnections
- 9. Quelles sont les valeurs SPAlert EventTypeBitmask valides?
- 10. Quelles sont les alternatives à ClickOnce?
- 11. Quelles sont les variables initialisées en Delphi?
- 12. Quelles sont les alternatives "Pastie"? (installable)
- 13. Quelles sont les alternatives pour CSharpOptParse?
- 14. gridview modifiable - quelles sont les bases?
- 15. Quelles sont les options disponibles pour VisualSVNServerHooks.exe?
- 16. Quelles sont les chaînes vraiment dans .NET?
- 17. Quelles sont les bonnes expressions régulières?
- 18. Quelles sont les limites internes à WCF?
- 19. Quelles sont les meilleures pratiques OOoBasic?
- 20. Compresseur YUI: Quelles sont les micro-optimisations?
- 21. Quelles sont les applications réelles du rendement?
- 22. Quelles sont les actions Excel VBA possibles sur les feuilles de calcul ou les classeurs masqués?
- 23. Quelles sont les bonnes stratégies de déploiement de code?
- 24. Quelles sont les API iPhone disponibles pour les jeux de matchmaking sur Internet?
- 25. Quelles sont les implications sur les performances d'accès à une valeur de registre Windows?
- 26. Quelles sont les règles concernant les chemins httpHandler dans ASP.NET?
- 27. Quelles sont les dimensions de l'écran iPhones pour le codage?
- 28. Quelles sont les longueurs des types de données communs?
- 29. Quelles sont les différences entre les délégués et les événements?
- 30. Quelles sont les principales modifications de syntaxe dans Ruby 1.9?
Cela devrait être dans une autre question –