Me parece que no puede encontrar ninguna documentación en línea sobre esto, y lo que estoy buscando en Google me está dando una gran cantidad de información contradictoria ...¿Cuáles son los rangos del acelerador en el iPhone?
Respuesta
De iphonedevsdk.com:
Los acelerómetros se utilizan en la primera y los iPhones de segunda generación (y I asumen también los toques del iPod) operan en dos modos: +/- 2 g, y +/- 8 g. (En realidad, a medida que respetado, aceleraciones informe un tanto fuera el rango nominal. La precisión no es spec'ed fuera de ese rango, sin embargo.)
de Apple que funciona en el modo de +/- 2 g . Hay una compensación: la resolución actual de es nominalmente 0.018 g, según la hoja de datos (aunque mi iPhone de primera generación usa 0.018168604, según una versión modificada de AccelerometerGraph). En el modo +/- 8 g, la resolución sería cuatro veces más cruda.
Supongo que Apple decidió que la resolución más fina sería más útil que el rango más amplio. (Prefiero ver más fina resolución de 0,018 g. Así que ninguno de nosotros es totalmente satisfecho.)
No se puede cambiar el modo con cualquier característica publicada de las API. Dado que están pasando la aceleración como un doble , podrían teóricamente permitir un cambio en el modo, y simplemente mirar el modo al volver a escalar el valor A/D, antes de informar la aceleración. (El lugar obvio para establecer el modo sería en la convocatoria que establece la aplicación recibir información acelerómetro .) Sin embargo, para mantener la compatibilidad , el sistema operativo tendría que establecer el modo de acelerómetro a +/- 2 g al comienzo de la aplicación. Y ninguno de los procesos en segundo plano podría permitirse establecer el modo de acelerómetro .
creé la siguiente aplicación para tratar de poner a prueba los rangos ...
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];
}
El problema es que cuando puedo girar mi iPod a lo largo de los ejes horizontal/vertical y luego darle la vuelta, me obtener valores como:
xmin -1.271802
xmax 1.180959
ymín -1.344477
ymáx 1,108285
zmín -2,30713
zmáx 2,325581
Si tomo el iPod y agitar el heck fuera de él, lo entiendo ...
x -2,325581-2,307413
y -2,325581-2,307413
z -2,307413-2,325581
Alguna idea de lo que está midiendo?
El mejor que he llegado con es:
eje vertical
x = -1 si se inclina hacia la izquierda (< |)
x = 1 si se encuentra inclinado todo el camino a la derecha (|>)
- donde < es la forma en que se ve la pantalla, y | es la parte inferior del iPod
y ~ -1 si la pantalla está frente a usted, perpendicular al piso ("pie")
y ~ 1 si espaldas a usted (y al revés)
La aplicación aGauge muestra estos datos brutos procedentes del acelerómetro a medida que mueve el dispositivo. También puede ayudarlo a encontrar el umbral de "volteo" para su dispositivo.
- 1. ¿Cuáles son los problemas del patrón MVVM?
- 2. ¿Cuáles son los "errores" al desarrollar un juego de iPhone?
- 3. ¿Cuáles son los frameworks de terceros de iPhone más útiles?
- 4. del acelerador peticiones Ajax
- 5. ¿Cuáles son las diferencias entre el punto doble ".." y el punto triple "..." en los rangos de confirmación de Git diff?
- 6. Configuraciones del acelerador WCF
- 7. ¿Cuáles son los usos prácticos del módulo (%) en la programación?
- 8. ¿Cuáles son los usos del predicado de falla en Prolog?
- 9. ¿Cuáles son los protocolos admitidos en el Marco de accesorios externos de Iphone
- 10. ¿Cuáles son los alias en ldap
- 11. ¿Cuáles son los comandos destructivos en git?
- 12. ¿Cuáles son los nuevos marcos?
- 13. ¿Cuáles son las alternativas para estos controles en iPhone
- 14. ¿Cuáles son los formatos de archivo de imagen admitidos para mostrar en el iPhone?
- 15. son rangos posibles con enumeraciones?
- 16. ¿Cuáles son los contenedores en Java
- 17. ¿Cuáles son los valores válidos de devolución del módulo Perl?
- 18. ¿Cuáles son los peligros de la prueba después del desarrollo?
- 19. ¿Cuáles son los principales beneficios del scrum como metodología?
- 20. ¿Cuáles son los usos inusuales y creativos del lienzo html5
- 21. Programación del compilador: ¿Cuáles son los ingredientes más fundamentales?
- 22. ¿Cuáles son los problemas del mundo real con Ruby?
- 23. ¿Cuáles son los retrovisores oficiales del repositorio central de Maven?
- 24. ¿Cuáles son los usos del código de auto modificación?
- 25. ¿Cuáles son los elementos más sorprendentes del estándar C++?
- 26. ¿Cuáles son los números entre corchetes en la salida NSLog()?
- 27. ¿Cuáles son los complementos jQuery "imprescindibles"?
- 28. ¿Cuáles son los cambios recientes a F #?
- 29. ¿Cuáles son los usos de svn copy?
- 30. ¿Cuáles son los diferentes usos de los [corchetes] en Ruby?
Esto debería estar en otra pregunta –