Step counter android studio

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 на новые значения:

Источник

Create a Step Counter Fitness App for Android with Kotlin

Android smartphones and tablets have a lot of sensors letting developers to create great applications answering to various use cases. In that tutorial, you are going to discover how to create a Step Counter Fitness Application for Android with Kotlin. A good way to discover how to make a simple application in Kotlin on Android Studio.

You can also discover this tutorial on the SSaurel’s Channel on YouTube :

First step is to create a new Android Studio Project with Kotlin support enabled. We assume that you know how to create this project. If you want to discover how to create this first Kotlin project on Android Studio, you can read the following tutorial on the SSaurel’s Blog : https://www.ssaurel.com/blog/create-your-first-android-app-with-kotlin/

Creating the User Interface

Now, we can create the User Interface of our Step Counter Fitness App. The User Interface will be quite simple with two TextView : one to display “Steps” and another to display the number of steps of the user.

The layout will have the following form :

Writing the Kotlin Code of the Main Activity

Now, it’s time to write the Kotlin Code of the Main Activity. In order to measure the steps of the user, we will use the Step Counter sensor available on some Android devices. Obviously, our application will work only on devices having a Step Counter sensor.

To start, we will need to get the SensorManager service in the onCreatemethod of the MainActivity. Then, in the onResume method, we try to get an instance of the Step Counter sensor of the Android device by calling the getDefaultSensor method of the SensorManager instance.

If this call returns null, the device has no Step Counter sensor and we display a message alerting the user. Otherwise, we can register our MainActivity to receive the updates of the user’s steps by calling the registerListener method of the SensorManager instance got previously. For that, the MainActivity needs to implement the SensorEventListener interface.

Note that we also use a boolean indicating if the user is running or no. For that, we simply consider that a user is running when the application is launched in the foreground. Otherwise, we consider the user is not running.

Читайте также:  Vice city android взлом

By implementing the SensorEventListener interface, our MainActivity overrides the onSensorChanged method. This method will be called when the Step Counter sensor detects some steps. By reading the first index of the values array of the SensorEvent passed in parameter, we can get the number of steps of the user.

If the user is running, we update the TextView letting us to display the number of steps walked by the user. This gives us the following code for our MainActivity :

Testing our Step Counter Fitness App

The time has come to test our Step Counter Fitness App. Like the Android emulator don’t let us to simulate the behavior of the Step Counter sensor, we need to execute our application on a real Android device. Obviously, you need to execute on a device having a Step Counter sensor.

Once launched, the Step Counter Fitness App we have made with Kotlin should look like that :

This tutorial learning you how to create a Step Counter Fitness App with Kotlin is ended. In the future, we will continue by creating more complex Applications. Don’t hesitate to give me your ideas in comments.

To discover more tutorials on Android Development, you can also visit the SSaurel’s Channel on YouTube :

Источник

Русские Блоги

Самый точный шагомер 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)

Читайте также:  Сигнал gps не найден 11 pokemon go андроид

В этой статье представлен модуль подсчета шагов текущего приложения, который решил вышеуказанные проблемы 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): используется для определения того, выключен ли телефон. При перезапуске телефона служба подсчета шагов используется для определения необходимости перезапуска консолидации подсчета шагов на основе этого флага. Основная причина заключается в повышении точности, и иногда загрузка загрузки не может быть получена.

Читайте также:  Альтернатива hd videobox для андроид 2021

Диаграмма шага датчика ускорения

Объясните блок-схему:
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. Сделал системный процесс.
Также запрашиваются только постоянные ямы, оптимизация и точность подсчета шагов. Пожалуйста, загрузите код и обменяйте его вместе.

Источник

Оцените статью