CMMotionActivityManager ignora el ciclismo

He estado investigando el CMMotionActivityManager del nuevo chip M7, para determinar si el usuario del dispositivo está caminando, corriendo, en un automobile, etc. (consulte la documentation de Apple ). Esto parecía un gran paso adelante al tratar de determinar esto antes de utilizar Data de LocationManager y acelerómetro solamente.

Sin embargo, me doy count de que CMMotionActivityManager no tiene una actividad ciclist , lo cual es decepcionante, y casi una solución para el uso completo como un nuevo administrador de actividades. ¿Alguien más ha encontrado una forma conveniente de usar CMMotionActivityManager con el ciclismo también sin tener que reincorporar el acelerómetro CMLocationManager + para intentar también probar el ciclismo?

Tenga en count que esto tampoco incluye las opciones de transporte generales para cosas como un tren. Por ejemplo, viajo una hora al día en el tren. La automoción podría hacerse más genérica al less, similar a la forma en que Moves usa el Transporte.

CMMotionActivity tiene estos types de movimiento definidos:

  • estacionario
  • para caminar
  • corriendo
  • automotor
  • desconocido

Notas útiles del código de Apple, que no necesariamente resuelven el problema, pero es útil:

CMMotionActivity

Una estimación de la actividad del usuario basada en el movimiento del dispositivo.

La actividad está expuesta como un set de properties, las properties no son mutuamente excluyentes.

Por ejemplo, si se encuentra en un auto detenido en una señal de alto, el estado podría ser similar a: estacionario = SÍ, caminando = NO, corriendo = NO, automotriz = SÍ

O un vehículo en movimiento, parado = NO, caminando = NO, corriendo = NO, automotriz = SÍ

O el dispositivo podría estar en movimiento, pero no caminar ni en un vehículo. estacionario = NO, caminando = NO, corriendo = NO, automotriz = NO. Tenga en count que en este caso todas las properties son NO.

[Fuente directa: Apple iOS Framework, CoreMotion / CMMotionActivity.h @interface CMMotionActivity, comentarios en línea del código]

Por lo tanto, no estoy seguro de si todavía necesita una respuesta, pero aquí está lo último de iOs8 SDK

 @property(readonly, nonatomic) BOOL cycling NS_AVAILABLE(NA, 8_0); 

En primer lugar, ¿es su pregunta o tipo de información sobre M7?

¿Alguien más ha encontrado una forma conveniente de usar CMMotionActivityManager con el ciclismo sin tener que reincorporar el acelerómetro LocationManager + para intentar probar también el ciclismo?

¿Ves que hay mucha confusión que creará si deseas verificar si la actividad es tipo de ciclismo? Porque solo depende del acelerómetro

el acelerómetro contiene estructuras de cristal microscópicas que se estresan por fuerzas de aceleración, lo que provoca que se genere una tensión. Y a partir de esa tensión puede analizar el resultado … así que lo que sé es que simplemente clasifica su velocidad y le da como resultado que camine o automotriz, por lo que si desea usar el ciclismo en algún momento muy rápido, muy lento o medio, así que puede ser que algún time dé lugar a caminar o correr o puede ser una locomotora, por lo que m7 no puede aclarar si es automotriz, ciclist o en funcionamiento porque No hay mucha variación de velocidad mientras pedaleas.

Aún así, mientras se usa para correr y caminar, en algún momento se obtienen resultados incorrectos en algunos casos, por lo que las posibilidades de que su aplicación proporcione información errónea también.

Una cosa más que pediste es

Tenga en count que esto tampoco incluye las opciones de transporte generales para cosas como un tren. Por ejemplo, viajo una hora al día en el tren. La automoción podría hacerse más genérica al less, similar a la forma en que Moves usa el Transporte.

Entonces, Apple también está trabajando en otras funciones de mapeo. Se dice que Apple planea actualizaciones notables en su aplicación Maps en iOS 8, y la compañía actualmente está trabajando en la implementación de direcciones de transporte público y características de mapeo en interiores (que Google ya tiene en iOS).

http://www.macrumors.com/2013/09/12/apple-working-to-leverage-new-m7-motion-sensing-chip-for-mapping-improvements/ (Enlace útil)

En la session 612 en WWDC 2014 , los dos ingenieros presentadores de Apple proporcionaron cierta información: en las diapositivas declararon:

El performance es muy sensible a la location.

  • Funciona mejor si se usa el dispositivo en la parte superior del arm Mejor para casos de uso retrospectivo

Latencia más larga

  • Lo mejor para casos de uso retrospectivo

En el video explican en la pista de audio (a partir de las 11:00) que

El ciclismo es nuevo, algo que presentamos en iOS 8. El ciclismo es muy desafiante y, una vez más, necesitas la dinámica y, por lo tanto, será muy sensible a la location. Si se montó en la parte superior del arm, la latencia será bastante razonable. Y si es en cualquier otro lugar, va a tomar mucho más time. Así que definitivamente no sugiero usar la sorting de actividades ciclists como una pista para el context aquí y ahora. Realmente es algo que querrás usar de manera retrospectiva para una aplicación de diario, por ejemplo.

Hice una sencilla configuration de testing para iOS 8 y 9 y iPhone 5s y 6 y no se detectó el ciclismo, ni una sola vez en más de 1,5 horas de ciclismo. Si el nuevo iPhone 6S mejora esta importante deficiencia en la detección de la actividad de movimiento, no está claro, Phil Schiller lo anunció en septiembre de 2015.

tl; tr

¡Actualmente, la detección de ciclismo en CoreMotion no funciona, ya que funciona para estacionar, caminar, correr y auto! No se detectará y solo se puede usar retrospectivamente.