2012-08-03 5 views
0
-(void)play 
{ 
    CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    [motionManager startDeviceMotionUpdates]; 

    while(!self.stopButtonPressed) 
    { 
     NSLog(@"Y-Axis acceleration is %f", motionManager.deviceMotion.userAcceleration.y); 
    } 
} 

console:Puis-je me fier à cet intervalle de mise à jour "par défaut" (accéléromètre) avec ce code?

2012-08-03 13:06:10.798 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.803 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.805 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.807 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.808 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.810 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.812 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.814 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.817 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.820 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.822 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.824 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.826 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.828 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.831 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.833 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.835 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.837 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.840 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.842 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.846 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.848 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.850 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.852 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.855 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.857 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.859 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.862 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.864 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.866 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.868 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.870 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.873 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.875 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.877 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.879 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.881 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.882 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.884 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.888 MyProject[8896:3a03] Y-Axis acceleration is -0.083223 
....etc. 

Selon la console, les valeurs d'accélération sont mis à jour toutes les 14 microsecondes en moyenne

Je ne suis pas en utilisant une file d'attente avec un intervalle de mise à jour de façon explicite, donc si je suppose que l'intervalle de mise à jour par défaut est d'environ 14 microsecondes (lorsque vous demandez de nouvelles valeurs à l'intérieur d'une boucle while comme je l'ai dans ce code spécifiquement)?

Ou est-ce "accidentel" et je ne devrais pas compter sur cela? Je l'ai testé plusieurs fois et l'intervalle de mise à jour est toujours compris entre 13 et 14 ms, mais est-il possible (si je ne définis pas explicitement un intervalle de mise à jour) que l'intervalle de mise à jour change significativement arrive à être "plus occupé" (que normalement ..) pour une raison quelconque à la fois ..?

Merci pour toute aide

Répondre

1

Vous ne devez pas compter sur cet intervalle, la cause de UIAccelerometer référence de classe - intervalle de mise à jour maximale est basée sur le matériel disponible, donc quand Apple mettra à jour puce Accéléromètre dans les futurs appareils, la fréquence peut changer (il peut également être différent sur iPads et iPhones actuels)

+0

Donc, je devrais utiliser une file d'attente et définir explicitement un intervalle de mise à jour? –

+0

Eh bien, mais si vous avez seulement besoin d'obtenir des données d'accéléromètre, j'utiliserais un UIAcceleremeter avec son système de délégué pratique. –

+0

hmm ... Je ne comprends pas très bien la délégation, et la documentation rend le son assez compliqué, parlant des modes de boucle d'exécution, etc. J'essaierai d'utiliser quelque chose comme [motionManager startAccelerometerUpdatesToQueue: [NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData * accelerometerData, erreur NSError *) { // bien que je ne sois pas sûr de ce qui entre ici étant donné le code que j'ai fourni dans mon message original .. }]; ' –

Questions connexes