CMMotionActivityManager игнорирует зацикливание

Я исследовал CMMotionActivityManager нового чипа M7, чтобы определить, идет ли пользователь устройства, бежит, находится в машине и т. д. (см. Документация Apple). Это казалось большим шагом вперед по сравнению с попыткой определить это предыдущее, используя только данные LocationManager и акселерометра.

Однако я заметил, что CMMotionActivityManager не имеет активности зацикливания, что разочаровывает и почти мешает полноценному использованию в качестве нового менеджера активности. Кто-нибудь еще нашел удобный способ использовать CMMotionActivityManager с ездой на велосипеде без необходимости повторного включения CMLocationManager + акселерометр, просто чтобы попытаться проверить и на езду на велосипеде?

Обратите внимание, что это также не включает общие варианты транспорта для таких вещей, как поезд. Например, я езжу час в день на поезде. По крайней мере, Automotive можно сделать более общим, подобно тому, как Moves использует Transport.

CMMotionActivity имеет только эти определенные типы движения:

  • стационарный
  • гулять пешком
  • Бег
  • автомобильный
  • неизвестный

Полезные примечания из кода Apple, которые не обязательно решают проблему, но полезны:

CMMotionActivity

Оценка активности пользователя на основе движения устройства.

Активность представлена ​​как набор свойств, причем свойства не являются взаимоисключающими.

Например, если вы находитесь в машине, остановившейся перед знаком остановки, состояние может выглядеть так: неподвижен = ДА, идет = НЕТ, бежит = НЕТ, автомобиль = ДА

Или движущееся транспортное средство, стационарное = НЕТ, идущее = НЕТ, работающее = НЕТ, автомобильное = ДА

Или устройство может быть в движении, но не на ходу или в транспортном средстве. неподвижный = НЕТ, ходьба = НЕТ, бег = НЕТ, автомобиль = НЕТ. Обратите внимание, что в этом случае все свойства НЕТ.

[Прямой источник: Apple iOS Framework, CoreMotion/CMMotionActivity.h @interface CMMotionActivity, встроенные комментарии к коду]


person Miro    schedule 22.04.2014    source источник
comment
Я думаю, что это очень правильный вопрос.   -  person Alper    schedule 25.04.2014
comment
Похоже, вы должны как минимум отправить запрос на улучшение на bugreport.apple.com и опубликовать номер в вашем вопросе, чтобы люди могли дублировать.   -  person Leo Natan    schedule 25.04.2014
comment
Когда пользователь едет на велосипеде, о каких действиях сообщает CMMotionActivity?   -  person matt    schedule 25.04.2014
comment
Я не проверял подробно на велосипеде, но я бы предположил, что это автомобиль, когда скорость выше 10-15 миль в час. Ниже это может пойти разными путями. Я добавил детали в редактирование.   -  person Miro    schedule 25.04.2014
comment
Или, согласно примечаниям Apple выше, у него может не быть ни одного типа активности, установленного на ДА, но для стационарного режима может быть НЕТ. неизвестно может быть ДА. Это интересный вопрос, на который я найду ответ.   -  person Miro    schedule 25.04.2014
comment
Можете ли вы быть немного более ясным? Единственная часть того, что вы написали, кажется вопросом: нашел ли кто-нибудь еще удобный способ использовать CMMotionActivityManager с ездой на велосипеде без необходимости повторного включения LocationManager + акселерометр, просто чтобы попытаться проверить и на езду на велосипеде? Что вы ищете в ответе?   -  person quellish    schedule 26.04.2014
comment
Было бы здорово, если бы M7 мог обнаруживать езду на велосипеде в одиночку, поскольку GPS действительно поглощает мою батарею. Есть ли способ увидеть необработанные данные чипа?   -  person v3nt    schedule 08.09.2014
comment
Чип M7 хранит данные в течение 7 дней, но я не думаю, что он хранит необработанные данные. Я предполагаю, что он использует то, что ему нужно, на лету, вычисляет и сохраняет статистику и продолжает работать. M7 предназначен для запросов на переднем плане, но не в фоновом режиме, поэтому мониторинг оперативных данных также не является вариантом, и в любом случае побеждает оптимизацию без фонового режима.   -  person Miro    schedule 08.09.2014
comment
Езда на велосипеде по-прежнему не распознается в iPhone 6 с установленной iOS 8.3 (самое новое устройство/iO, которое можно иметь на данный момент). Вместо этого я получаю неизвестную активность. Кто-нибудь нашел причину?   -  person Lukasz    schedule 21.04.2015


Ответы (3)


Итак, не уверен, что вам все еще нужен ответ на этот вопрос, но вот последний из iOS8 SDK.

@property(readonly, nonatomic) BOOL cycling NS_AVAILABLE(NA, 8_0);
person Gal Blank    schedule 24.09.2014
comment
Я еще не читал этого, но, видимо, теперь они поддерживают его с ios8! Спасибо за обновления. Я добавил это в свой код. - person Miro; 25.09.2014
comment
Я проверил это на iPhone 6, iOS 8.3, но езда на велосипеде по-прежнему не обнаружена (неизвестно срабатывает, когда я езжу на велосипеде). - person Lukasz; 21.04.2015
comment
У кого-нибудь еще есть эта проблема? Я попробовал это сегодня с SE (2-го поколения, iOS 14), зацикливаясь около 5 минут, зацикливание все еще не было обнаружено. - person Thread Pitt; 21.04.2021

Прежде всего, это ваш вопрос или какие-то информативные подробности о M7?

Кто-нибудь еще нашел удобный способ использовать CMMotionActivityManager с ездой на велосипеде без необходимости повторного включения LocationManager + акселерометр, просто чтобы попытаться проверить и на езду на велосипеде?

Видите ли, это создаст много путаницы, если вы хотите проверить, является ли активность типом езды на велосипеде, потому что это просто зависит от акселерометра.

акселерометр содержит микроскопические кристаллические структуры, на которые воздействуют силы ускорения, что вызывает генерацию напряжения, и по этому напряжению он может анализировать результат. автомобильный, поэтому, если вы хотите использовать езду на велосипеде какое-то время очень быстро, очень медленно или средне, может быть, это когда-то приведет к ходьбе или бегу, или может быть автомоторным, поэтому m7 не может уточнить, является ли это автомобилем, ездой на велосипеде или бегом, потому что есть не большая разница в скорости во время езды на велосипеде.

Тем не менее, при использовании для бега и ходьбы некоторое время в некоторых случаях даются неправильные результаты ... так что есть вероятность, что ваше приложение также будет давать неверную информацию.

Еще одна вещь, которую вы спросили, это

Обратите внимание, что это также не включает общие варианты транспорта для таких вещей, как поезд. Например, я езжу час в день на поезде. По крайней мере, Automotive можно сделать более общим, подобно тому, как Moves использует Transport.

Таким образом, Apple также работает над другими картографическими функциями. Говорят, что Apple планирует заметные обновления своего приложения «Карты» в iOS 8, и в настоящее время компания работает над внедрением как маршрутов общественного транспорта, так и функций картографирования помещений (которые Google уже имеет на iOS).

http://www.macrumors.com/2013/09/12/apple-working-to-leverage-new-m7-motion-sensing-chip-for-mapping-improvements/ (полезная ссылка)

person User 1531343    schedule 29.04.2014

На сессии 612 на WWDC 2014 два инженера Apple, представившие доклад, предоставили некоторую информацию: На слайдах они заявили:

Производительность очень чувствительна к местоположению

  • Лучше всего работает, если устройство носится на плече Лучше всего подходит для ретроспективных вариантов использования

Максимальная задержка

  • Лучше всего для ретроспективных вариантов использования

В видео они объясняют звуковая дорожка (начиная примерно с 11:00), которая

Езда на велосипеде — это новинка, которую мы представили в iOS 8. Езда на велосипеде — это очень сложно, и вам снова нужна динамика, поэтому она будет очень чувствительна к местоположению. Если бы он был установлен на плече, задержка будет довольно разумной. И если это где-то еще, это займет намного больше времени. Так что определенно я бы не советовал использовать классификацию велосипедной активности в качестве подсказки для контекста здесь и сейчас. Это действительно то, что вы захотите использовать ретроспективно, например, для приложения для ведения журнала.

Я сделал простую тестовую настройку для iOS 8 и 9, а также для iPhone 5s и 6, и цикличность не была обнаружена — ни разу за более чем 1,5 часа цикла. Неясно, восполнит ли новый iPhone 6S этот серьезный недостаток в обнаружении активности. Фил Шиллер объявил об этом в сентябре 2015 года.

tl;tr

В настоящее время обнаружение велосипедного движения в CoreMotion не работает, поскольку оно работает для стационарного движения, ходьбы, бега и автомобиля! Он не будет обнаружен и может быть использован только ретроспективно.

person Michael Dorner    schedule 25.09.2015
comment
iPhone6S, кажется, не улучшает ситуацию. Езда на велосипеде по-прежнему засчитывается в мой подсчет шагов при первоначальном тестировании. - person svarrall; 28.09.2015