Solo me pregunto si puedo verificar si el dispositivo (iPhone, iPad, iPod, es decir, dispositivos iOS) tiene un giroscopio.¿cómo puedo verificar si un giroscopio está presente en el dispositivo?
Respuesta
- (BOOL) isGyroscopeAvailable
{
#ifdef __IPHONE_4_0
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
BOOL gyroAvailable = motionManager.gyroAvailable;
[motionManager release];
return gyroAvailable;
#else
return NO;
#endif
}
Véase también mi esta entrada de blog para saber que se puede comprobar si hay diferentes capacidades de los dispositivos IOS http://www.makebetterthings.com/blogs/iphone/check-ios-device-capabilities/
clase gestor de movimiento de CoreMotion tiene una propiedad construida en la comprobación de disponibilidad de hardware. El método de Saurabh requeriría que actualizaras tu aplicación cada vez que se lanzara un nuevo dispositivo con un giroscopio (iPad 2, etc.). Aquí está el código de ejemplo utilizando la propiedad documentada de Apple para comprobar disponibilidad giroscopio:
CMMotionManager *motionManager = [[[CMMotionManager alloc] init] autorelease];
if (motionManager.gyroAvailable)
{
motionManager.deviceMotionUpdateInterval = 1.0/60.0;
[motionManager startDeviceMotionUpdates];
}
Ver the documentation para obtener más información.
Creo que las respuestas de @Saurabh y @Andrew Theis son parcialmente correctas.
esta es una solución más completa:
- (BOOL) isGyroscopeAvailable
{
// If the iOS Deployment Target is greater than 4.0, then you
// can access the gyroAvailable property of CMMotionManager
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
BOOL gyroAvailable = motionManager.gyroAvailable;
[motionManager release];
return gyroAvailable;
// Otherwise, if you are supporting iOS versions < 4.0, you must check the
// the device's iOS version number before accessing gyroAvailable
#else
// Gyro wasn't available on any devices with iOS < 4.0
if (SYSTEM_VERSION_LESS_THAN(@"4.0"))
return NO;
else
{
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
BOOL gyroAvailable = motionManager.gyroAvailable;
[motionManager release];
return gyroAvailable;
}
#endif
}
Cuando el SYSTEM_VERSION_LESS_THAN()
se define en this StackOverflow answer.
I Estoy completamente confundido mirando todas estas respuestas en esta página. @jonsibley ¿Es cierto que el método "gyroAvailable" solo está disponible en IOS4 +? – ShayanK
- 1. Cómo verificar si un valor de matriz profunda está presente
- 2. ¿Cómo puedo verificar si un NSString particular está presente en un NSArray?
- 3. iOS - Cómo verificar si una vista modal está presente
- 4. ¿Cómo verificar si el valor específico está presente en un hash?
- 5. ¿Cómo puedo verificar si el Android Market está instalado en el dispositivo de mi usuario?
- 6. Cómo detectar si un micrófono está presente
- 7. ¿Cómo puedo verificar si actualmente se está visualizando un UIViewController?
- 8. ¿Cómo detectar si un micrófono está presente en Android?
- 9. ¿Cómo puedo verificar si la tarjeta SIM está disponible en un dispositivo Android?
- 10. ¿Cómo saber si un sensor está presente en mi dispositivo Android?
- 11. ¿Cómo puedo verificar si un JSON está vacío en NodeJS?
- 12. ¿Puedo verificar si el iPhone está acoplado?
- 13. ¿Cómo puedo verificar si un filehandle está abierto en Perl?
- 14. ¿Cómo puedo verificar si un dispositivo Android está conectado a la web?
- 15. En JQuery, ¿cómo puedo verificar si el DOM está listo?
- 16. ¿Cómo puedo verificar si un complemento jQuery está cargado?
- 17. Cómo saber si el dispositivo está durmiendo
- 18. Cómo verificar si la carpeta recién creada está presente en la tarjeta SD en Android
- 19. C++: ¿cómo puedo verificar si el buffer cin está vacío?
- 20. Cómo verificar si un DataGridViewCheckBoxCell está marcado
- 21. ¿Cómo puedo verificar si un UIView está animando?
- 22. ¿Cómo puedo verificar si el teléfono Android se está cargando?
- 23. ¿Cómo puedo verificar si un módulo Perl está instalado?
- 24. ¿Debo verificar si una determinada clave está presente en el Diccionario antes de acceder a ella?
- 25. cómo detectar si el modo de acción ya está presente
- 26. Compruebe si un usuario está desconectado en el dispositivo
- 27. ¿Cómo verifico si un dispositivo USB dado está enchufado?
- 28. ¿cómo puedo ver dónde está presente un ejecutable en macosx?
- 29. ¿Cómo verificar si un objeto está definido?
- 30. ¿Cómo puedo verificar si una IP está viva en Java?
¿Qué ventaja tiene usar #ifdef aquí? – jonsibley
@jonsibley CMMotionManager solo está disponible en iPhone os 4 .. si tratamos de usarlo en el sistema operativo anterior no compilará – Saurabh
Entendido, gracias. – jonsibley