Написать шагомер
Возникла задача определить, что человек идёт.
То есть фактически определять шаги.
Подскажите, пожалуйста, есть ли готовые функции или библиотеки, которые по данным акселерометра могут определить шаги?
Или если если есть у кого, поделитесь документацией.
Спасибо, но готовые программы меня не интересуют, так как определение что человек идёт (шагает) — это лишь небольшая часть.
По этому ищу или библиотеки или алгоритм для определения шагов.
rlepricon
Ищешь прогу на гуглплее, если подходит, то дизасемблишь и ищешь алгоритм, профт.
rlepricon
> Возникла задача определить, что человек идёт.
> То есть фактически определять шаги.
> Подскажите, пожалуйста, есть ли готовые функции или библиотеки, которые по
> данным акселерометра могут определить шаги?
> Или если если есть у кого, поделитесь документацией.
Посмотри на этом сайте http://geek-nose.com/shagomer-dlya-android-luchshie-prilozheniya-dlya-xodby/, есть пару примеров приложений, при «вскрытии» которых можно создать свой алгоритм, т.е. настроить под себя любимого=)
Я бы взял телефон написал прогу выводящую показания гироскопа на экран и походил бы, посмотрел что она показывает. Отсюда придумать алгоритм не так сложно.
rlepricon
Ну я написал вывод значений акселометра на движке Unity он выводит значения от 0 до 1 в спокойном состоянии,ну я округлил и умножил на 100 чтоб работать с нормальными числами.
В общем потестил и что я хочу те сказать: Когда устройство четко в какой либо оси по отношению к земле то можно отслеживать если значение превысило 105 то это как шаг, но это все приблизительно конечно..
Если устройство повернуть на 45 градусов то икс у меня показал 70 и игрек 70, а это плохо, такого по идее не должно быть, должно быть по 50 примерно.
Была конечно у меня такая мысль усреднять значения координат, но как ты будеш усреднять если груз весом 100 грамм поделил пополам и получил два груза по 70 грамм..
Поэтому мой те совет: Если будеш собирать акселерометр то самый точный результат ты получиш когда направлено оно по какой либо из осей к земле.
NIKOLAYY
> но как ты будеш усреднять если груз весом 100 грамм поделил пополам и получил
> два груза по 70 грамм..
теорему пифагора знаешь?
(0.7 ^ 2 + 0.7 ^ 2) ^ (1/2) = 0.98
rlepricon
> Подскажите, пожалуйста, есть ли готовые функции или библиотеки, которые по
> данным акселерометра могут определить шаги?
если применение — казуалочка с держащим в руках телефон игроком, то фейл почти гарантирован
единственный совет могу дать:
1. разрабатывайте собственный алгоритм
2. алгоритм нужно калибровать под пользователя, т.е. при первом запуске заставить пользователя походить, постоять на месте, ещё походить следуя инструкциям на экране, и по собранным данным выставить настройки шага и покоя для конкретного пользователя
3. научите пользователя не теребить устройство почем зря, держать его ровно
Chupakaber
> теорему пифагора знаешь?
> (0.7 ^ 2 + 0.7 ^ 2) ^ (1/2) = 0.98
Дак это че получается акселеромерт как бы правильно показал что ли?
Источник
Шагомер — Какие для этого нужно использовать сенсоры?
Какие классы нужно использовать для десериализации XML
Здравствуйте, Помогите осилить десериализацию такой структуры
Какие технологии C# нужно использовать для создания локального сайта?
Задача состоит в следующем. Есть серверная машина в фирме, надо создать приложение. Где.
Табулирование функции: какие формулы нужно использовать, и как их записать для задания указанного графика
Какие формулы нужно использовать, и как их записать для задания такого графика:
Магазин видеоигр. Что нужно для функционирования магазина. Какие таблицы должны быть, какие запросы и какие отчеты
Я очень сильно запутался и я не могу себе представить, что нужно для функционирования магазина.
Холодильник Gorenje K357 2MELA pnc 665690, Какие сенсоры стоят?
Возникла необходимость заказать датчики температуры на данный холодос. На схеме пошукал и не нашол.
Передать извне в JS, какие web-камеру и микрофон нужно использовать
Добрый день. Есть код страницы HTML и JS, который определяет список аудио и видеоустройств.
Фоторобот на С++: какие библиотеки для этого потребуются
Нужно на С++ написать программу-фоторобот. Дайте наводки на библиотеки, и вообще как работать с.
Источник
DenTNT.trmw.ru
Записная книжка
Android Studio: Создание простого шагомера (Step Counter)
Я пока не могу заставить работать датчики в Unity New Input System, поэтому решил освоить плагины — попробую через них достучаться до сенсоров таким образом.
Чтобы лучше в этом разобраться, я начал с изучения создания приложения простенького шагомера на Андроид.
Видео-урок:
Для работы нам потребуется Android Studio
Подготовка проекта
1. Запускаем Android Studio и выбираем «Start a new Android Studio project»:
2. На окне диалога выбора шаблона проекта «Select a Project Template«, выбираем « Empty Activity » и нажимаем кнопку «Next»:
3. На экране конфигурации проекта заполняем нужные поля и жмём «Finish»:
Дизайн и код
По умолчанию в окошке Дизайна нам сразу предлагается контейнер ViewGroup, с типом ConstraintLayout. Поскольку для размещения элементов в этом случае используется привязка, то это нам будет не так удобно. Поменяем тип на LinearLayout. Для смены контейнера можно исправить код в файле activity_main.xml , но в моём случае быстрее будет сделать это прямо в окне Дизайнера.
4. На пустом поле окна Дизайнера нажимаем правую кнопку мыши и выбираем «Convert View…»:
5. Появится диалоговое окно, где нужно будет выбрать и подтвердить смену View на LinearLayout (это автоматически сменит код в файле activity_main.xml на нужный нам):
6. Аналогичным образом поменяем ориентацию LinearLayout на Вертикальную:
При этом в xml-код будет добавлена строка:
Вообще рекомендуется использовать ConstraintLayout для лучшей производительности и совместимости. Но в этом примере я применю LinearLayout.
7. Чтобы текст был выровнен по вертикали по центру я внесу изменения в XML (не знаю, как это сделать в Дизайнере):
8. В окне Дизайнера удалим старый TextView и перетащим два новых:
9. В коде исправим для них id на новые значения:
Источник
Русские Блоги
Самый точный шагомер Android с открытым исходным кодом
Автор:Код фермеров
Вчера я прочитал статью, которую прочел. Я помню, что давным-давно мой друг спросил меня, как реализовать шагомер, как сохранить его в живых и т. Д. Я только что увидел статью, а затем скачал демо-версию, чтобы испытать ее. Кстати, я посмотрел код. Добавил немного знаний.
Поскольку он предназначен для подсчета количества шагов в системе, и он также достаточно точен, я намеренно пробежал сегодня день и сравнил его с кампанией WeChat.
Разрыв между ними составляет около 20 шагов, и можно сказать, что они почти одинаковы.
PS: Я играл немного рано утром, в то время было 0, может быть, так точно, тестирую машину: Xiaomi 5S.
Хорошо, давайте поделимся авторской реализацией шагомера со всеми, надеюсь, она вам пригодится.
Недавно в проекте был исследован модуль подсчета шагов, основной функцией которого является запись подсчета шагов за день, аналогично спорту WeChat, подсчету шагов Alipay и бормотанию сегодняшнего числа шагов.
Исследовательская работа до разработки, поиск по baidu, google, github не нашел демоверсии и статей, которые я хочу, большинство из них нуждаются в Сервисе, чтобы поддерживать жизнь.
Для крупных производителей мобильных телефонов, чтобы увеличить время автономной работы, AlertManager, BOOT_COMPLETED и START_STICKY Сервиса в основном неэффективны, и для Сервиса еще более невозможно поддерживать работу в фоновом режиме.
Ниже приведен модуль подсчета шагов, который я реализовал, чтобы учиться у всех.
адрес GitHub
https://github.com/jiahongfei/TodayStepCounter
Ранее также был написан модуль подсчета шагов, написанный для этой статьи. Эта статья является оптимизацией вышеупомянутой статьи. Код github был обновлен до последней версии.
Модуль подсчета шагов Android (аналогично движению WeChat)
Три шага оптимизации модуля подсчета шагов приложения
Первый процесс онлайн:
Поскольку функция спешит к запуску, модуль подсчета шагов в начале проекта использует только датчик ускорения Sensor.TYPE_ACCELEROMETER для вычисления количества шагов. В то же время служба должна выживать в фоновом режиме для подсчета шагов, в противном случае она не может считать шаги.
Шагомер второго процесса:
Проект выполняется некоторое время. Компания начала продвигать модуль подсчета шагов, поэтому она снова начала разрабатывать модуль подсчета шагов. На этот раз он использовал Sensor.TYPE_STEP_COUNTER, датчик шагов, предоставляемый Android 4.4 или более поздней версией. В этот раз произошел качественный скачок в повторной разработке всего модуля шагомера, поскольку датчик шага больше не нужен для поддержания фона, а энергопотребление датчика шагомера особенно низкое, весь модуль также экономит энергию.
Количество шагов оптимизации третьего процесса:
Количество пользователей увеличилось, а количество жалоб возросло. Различные модели android действительно раздражают, и, наконец, третий этап оптимизации.
столкнулся с большинством проблем:
1. Android 4.4 или выше, но в телефоне отсутствует шаговый сопроцессор
2. В некоторых мобильных телефонах число шагов увеличивается внезапно, а это может быть сотни тысяч шагов в день.
3. Некоторые телефоны очищаются много раз в день.
4. Подсчет шагов во время загрузки не может быть запущен автоматически, и приложение необходимо открыть (я прослушал трансляцию BOOT_COMPLETED)
5. Разделение на следующий день (разделение на 0 часов) нелегко использовать Каждое утро мне нужно открывать приложение (я настроил AlertManager)
В этой статье представлен модуль подсчета шагов текущего приложения, который решил вышеуказанные проблемы 1, 2 и 3. Что касается проблем 4, 5 — это системные решения, и вы можете помочь мне, дав мне советы в комментариях.
Модуль подсчета шагов был отдельно упакован как libModule и загружен на github. Если разработчикам это нужно или вы хотите общаться, его можно легко загрузить. Нажмите здесь, чтобы загрузить.
Шаг подсчета фона
1. Датчик ускорения Sensor.TYPE_ACCELEROMETER метод подсчета шагов:
Таким образом, существует алгоритм с открытым исходным кодом для вычисления количества шагов в соответствии с датчиком ускорения;
преимущество: Пока можно использовать устройство с датчиком ускорения, можно использовать относительно больше устройств.
Недостатки:Точность количества шагов зависит от алгоритма, и алгоритм трудно оптимизировать, иначе требуется фоновая служба поддержания активности, иначе шаг не может быть подсчитан, алгоритм подсчета шагов более дорогой, некоторые экраны блокировки мобильного телефона не могут быть подсчитаны;
2. Датчик подсчета шагов Sensor.TYPE_STEP_COUNTER Метод подсчета шагов:
Официальный перевод и перевод (мой английский не совсем понятен, если есть ошибки, укажите):
Этот датчик возвращает все этапы от запуска системы мобильной телефонной связи до текущего времени. Телефонная система перезапускает датчик и возвращает 0 шагов. Он также возвращает отметку времени, указывающую время последнего шага. Этот шагомер аппаратный и потребляет очень мало энергии. Если вы хотите записать количество шагов, не регистрируйтесь при регистрации датчика: он может автоматически считать шаги в фоновом режиме и возвращать общее количество шагов, когда приложение просыпается. Приложение должно зарегистрировать датчик, иначе оно не сможет вернуть количество шагов.
Преимущества:Высокая аппаратная точность подсчета шагов, низкое энергопотребление, если вы регистрируетесь без автоматического фонового подсчета шагов;
недостаток:Некоторые телефоны с Android 4.4 или выше, сбрасывают шагомер на ноль при перезапуске телефонной системы, вы не можете вернуть информацию о шагах (количество шагов соответствует времени), но только общее количество шагов в текущее время.
Модуль подсчета шагов Используются оба метода подсчета шагов:
Определяет, поддерживается ли Sensor.TYPE_STEP_COUNTER.Если поддерживается датчик подсчета шагов, если датчик ускорения не поддерживается, подсчет шагов не поддерживается.
Для подсчета шагов с использованием датчика ускорения требуется, чтобы пользователь вручную установил автоматический запуск фона, в противном случае шаг не может быть посчитан.
Чтобы использовать датчик шагомера, вам необходимо преодолеть его недостатки в программе: система мобильной связи сбрасывает шагомер на ноль; она не может вернуть подробности шага (количество шагов соответствует времени), а только сумму текущего времени. несколько шагов.
Сначала введите метод доступа, а затем введите принцип модуля подсчета шагов.
1. Первая загрузка демо подсчета шагов TodayStepCounter
2. Демо-структура проекта выглядит следующим образом:
Из рисунка видно, что todaystepcounterlib — это модуль, инкапсулированный модулем подсчета шагов, и предоставляемый им интерфейс ISportStepInterface.aidl
3. Как получить доступ к:
Просмотрите следующий код внешнего интерфейса ISportStepInterface.aidl:
Посмотрите код использования MainActivity.java, код ключа внутри очень прост
Принцип подсчета шагов
Блок-схема модуля подсчета шагов
Объясните блок-схему:
1. Весь модуль подсчета шагов предоставляется службой (TodayStepService), работающей в отдельном процессе, так как он работает в отдельном процессе, предоставляемый извне интерфейс использует форму aidl (ISportStepInterface).
2. Трансляция с разделением нулями (TodayStepAlertReceive): используется для решения проблемы обнуления модуля подсчета шагов по дням, поскольку датчик подсчета шагов не делит в зависимости от дня, но возвращает общее количество текущих шагов, эта трансляция необходима для сегментирования модуля подсчета шагов. Пока модуль подсчета шагов закончен, он вернется к нулю и начнет отсчет с 0
3. Передача при загрузке (TodayStepBootCompleteReceiver): Передача при загрузке используется для решения проблемы сброса датчика шагомера при перезагрузке телефона. Поскольку датчик шагомера сбрасывает телефон в ноль, число шагов будет объединено при получении широковещательной передачи при запуске. Количество шагов начинает накапливаться.
4. База данных (TodayStepDBHelper): используется для записи деталей шага дня, время соответствует шагу
5. Подсчет шагов датчика ускорения (TodayStepDcretor): Поскольку Android 4.4 или ниже или некоторые специальные мобильные телефоны не предоставляют датчики подсчета шагов, эти модели используют датчик ускорения для подсчета шагов и возвращаются к TodayStepService через мониторинг OnStepCounterListener.
6. Датчик подсчета шагов (TodayStepCounter): Android 4.4 или выше предоставляет сопроцессор подсчета шагов, который может использовать датчик подсчета шагов для подсчета шагов с низким энергопотреблением и точного подсчета шагов и возврата к TodayStepService через OnStepCounterListener.
7. Контроль завершения работы (TodayStepShutdownReceiver): используется для определения того, выключен ли телефон. При перезапуске телефона служба подсчета шагов используется для определения необходимости перезапуска консолидации подсчета шагов на основе этого флага. Основная причина заключается в повышении точности, и иногда загрузка загрузки не может быть получена.
Диаграмма шага датчика ускорения
Объясните блок-схему:
Android 4.4 или ниже или некоторые специальные мобильные телефоны не предоставляют датчик подсчета шагов. Я могу использовать только датчик ускорения для подсчета шагов. Принцип датчика ускорения заключается в использовании определенного алгоритма для моделирования количества шагов (датчик ускорения). Алгоритм подсчета шагов не входит в сферу действия настоящей статьи.) Таким образом, служба шага должна работать в фоновом режиме или не может быть подсчитана. Этот метод использует широковещательный обратный вызов Intent.ACTION_TIME_TICK для определения текущего времени и Является ли время, записанное PreferencesHelper, таким же, как в прошлый раз? Если количество шагов равно нулю, шаги отсчитываются от 0. Записи шагов сохраняются с помощью PreferencesHelper, чтобы система телефона не сбрасывала шаги к нулю.
Блок-схема подсчета шагов для датчика подсчета шагов
Объясните блок-схему:
Датчики подсчета шагов над Android 4.4 можно использовать для подсчета шагов. Что касается датчика подсчета шагов, он был представлен выше. Таким образом, некоторые мобильные телефоны не нуждаются в разрешении для запуска программы.
Есть два способа разделить шаги по дням:
1. Первый способ такой же, как и выше, с использованием широковещательной передачи Intent.ACTION_TIME_TICK.
2. Второй метод заключается в использовании метода AlertManager, который устанавливает тревогу на 0 часов. В этой трансляции на 0 часов число шагов отделяется. Этот AlertManager не может быть активирован каждым мобильным телефоном.
Существует четыре способа определения перезапуска системы мобильного телефона:
1. Включите радио и прослушайте BOOT_COMPLETED. Этот мониторинг не может быть получен каждым мобильным телефоном. Если вы его получите, вы можете запустить службу, а затем объединить шаги, чтобы сделать модуль подсчета шагов с момента последнего выключения. Количество шагов начинает накапливаться. Если оно не получено, оценка повторного запуска может быть увеличена только следующими способами.
2. Отключите мониторинг трансляции ACTION_SHUTDOWN. Этот мониторинг доступен не для каждого мобильного телефона. Если он получен, система может быть перезапущена пользователем, вручную запускающим службу.
3. Запишите время работы, чтобы оценить перезапуск телефона. Время последнего запуска больше, чем текущее время работы, чтобы оценить перезапуск, но просто увеличьте точность. В крайних случаях непрерывный перезапуск не определит.
4. Общее количество шагов датчика в последний раз, текущие шаги датчика меньше, чем последние шаги датчика, должны быть перезапущены, просто чтобы повысить точность не является абсолютной
Основные этапы пошагового подсчета датчика
Объяснение этой блок-схемы приведено на рисунке.
Улучшить точность подсчета шагов:
1. Установите приложение для запуска в фоновом режиме
2. Различное программное обеспечение безопасности устанавливает приложение в белый список, чтобы гарантировать, что приложение не будет убито никаким программным обеспечением безопасности в фоновом режиме.
Два вышеупомянутых метода гарантируют, что шаги приложения всегда отображаются в панели уведомлений.
3. Если система мобильного телефона перезапускается, если количество шагов не отображается в панели уведомлений, это означает, что приложение не получило мониторинг запуска, и приложение необходимо запустить вручную, иначе количество шагов будет потеряно.
Приложение работает в фоновом режиме и определенно потребляет электроэнергию. Некоторые мобильные телефоны могут считать шаги при закрытом фоне, но для этого необходимо, чтобы приложение каждое утро открывалось, чтобы модуль подсчета шагов выполнял шаги. Очистить в противном случае шаги будут потеряны.
Нужно оптимизировать:
1. SharedPreferences записывается три раза для каждого обратного вызова датчика.
2. Модуль подсчета шагов работает в фоновом режиме. Каждый день после 0 часов некоторые шаги будут потеряны. Количество потерянных шагов связано с количеством шагов, необходимых для запуска датчика подсчета шагов. Например: I Тестовая машина может выполнить 10 последовательных шагов, чтобы запустить обратный вызов датчика шагомера, поэтому 10 шагов будут потеряны.
Краткое описание:
Счетчик шагов Android борется с системой Android. Различные системные обратные вызовы нелегко использовать (AlertManager, BOOT_COMPLETED, JobScheduler). Некоторые ограничения датчика счетчика шагов также должны быть устранены (система перезагружается и сбрасывается в ноль, и ее нельзя автоматически разделить на дни. Некоторые телефоны Процесс уничтожения не может рассчитывать шаги), но также, чтобы избежать проблемы различных мобильных телефонов, мы можем только попытаться не потерять количество шагов и повысить точность подсчета шагов. В настоящее время я обнаружил, что подсчет шагов Alipay очень точен при подсчете шагов теста. Я думаю, что система Alipay. Сделал системный процесс.
Также запрашиваются только постоянные ямы, оптимизация и точность подсчета шагов. Пожалуйста, загрузите код и обменяйте его вместе.
Источник