CMMotionActivityManager игнорира цикъла

Проучвах CMMotionActivityManager на новия чип M7, за да определя дали потребителят на устройството ходи, тича, в кола и т.н. (вижте Документация на Apple). Това изглеждаше като страхотна стъпка напред в сравнение с опитите да се определи предишното чрез използване само на LocationManager и данни от акселерометъра.

Забелязвам обаче, че CMMotionActivityManager няма активност за циклене, което е разочароващо и почти прекъсва сделката за пълно използване като нов мениджър на дейности. Някой друг намерил ли е удобен начин да използва CMMotionActivityManager с колоездене също, без да се налага да включва отново CMLocationManager + акселерометър, само за да се опита да тества и за колоездене?

Имайте предвид, че това също не включва общи опции за транспорт за неща като влак. Например пътувам един час на ден с влака. Автомобилите могат да бъдат направени поне по-общи, подобно на начина, по който 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 (най-новото устройство/iOs, което можете да имате към този момент). Вместо това получавам неизвестна дейност. Някой намери ли причината?   -  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?

Някой друг намерил ли е удобен начин да използва CMotionActivityManager и с цикличност, без да се налага да включва повторно LocationManager + акселерометър, само за да се опита да тества и за цикличност?

Вижте, има много объркване, което ще създаде, ако искате да проверите дали дейността е тип колоездене??защото зависи само от акселерометъра

акселерометърът съдържа микроскопични кристални структури, които се натоварват от ускорителни сили, което причинява генериране на напрежение. и от това напрежение той може да анализира резултата.. така че това, което знам, е, че той просто класифицира вашата скорост и ви дава резултат, че това е бягане, ходене или автомобилен, така че ако искате да използвате колоездене известно време много бързо, много бавно или средно, така че може известно време да доведе до ходене или бягане или може да бъде автомобилен, така че m7 не може да изясни нещо дали е автомобилен, колоездене или бягане, защото има няма голяма разлика в скоростта, докато карате велосипед.

Въпреки това, докато се използва за бягане и ходене, известно време дава грешни резултати в някои случаи.. така че има вероятност приложението ви също да даде грешна информация.

Още нещо, което попитахте е

Имайте предвид, че това също не включва общи опции за транспорт за неща като влак. Например пътувам един час на ден с влака. Автомобилите могат да бъдат направени поне по-общи, подобно на начина, по който Moves използва Transport.

Така че Apple работи и върху други функции за картографиране. Говори се, че Apple планира забележителни актуализации на своето приложение Maps в 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