- Собираем показания датчиков с Android смартфона
- Андроид для снятия показаний
- AliveCor Mobile ECG. Снимаем ЭКГ прямо на смартфоне
- Работа с датчиками в Android, или сервис для записи показаний с акселерометра
- Введение
- Как оказалось, не все так просто
- Про сервисы в Android
- Запуск сервиса, получение показаний с акселерометра, запись в файл
Собираем показания датчиков с Android смартфона
В своем первом посте на Хабре я бы хотел рассказать о том, как получать данные датчиков в ОС Android, а конкретно — угол наклона вашего аппарата во всех трех плоскостях. Заинтересовавшихся прошу под кат.
Датчики ОС Android делятся на три категории: движения, положения и окружающей среды. Датчики эти могут быть самыми разными:
- Акселерометр
- Гироскоп
- Датчик освещения
- Датчик магнитных полей
- Акселерометр
- Барометр
- Датчик поднесения телефона к голове
- Датчик температуры аппарата
- Датчик температуры окр. среды
- Измеритель относительной влажности
- И т.д.
Естественно, их набор зависит от «комплектации» аппарата, но есть и датчики, присутствующие в большинстве смартфонов на Android — акселерометр и гироскоп.
Посредством этих датчиков мы можем узнать положение телефона в пространстве, а именно углы наклона аппарата во всех трех плоскостях (XY, YZ, ZX). Этим мы и займемся!
Для начала создадим новый проект и накидаем простенькое отображение с тремя надписями для вывода показаний датчиков и соответствующими подписями к ним. У меня получилось что-то вроде этого:
В главной активити объявление класса приведем к виду:
Класс SensorEventListener поможет нам отследить события на датчиках.
У вас должно появиться четыре обязательных метода:
Как вы уже наверное догадались, нас вскоре заинтересует последний метод. А пока объявим необходимые нам переменные:
Первая переменная — менеджер сенсоров устройства. Именно она даст нам доступ к интересующему нас датчику. Для этого событие onCreate сделаем похожим на это:
Ну вот, почти закончили! Осталось только получить значения и вывести в текстовые поля. Вспомним про событие onSensorChanged. Если помните в него передается параметр SensorEvent event. Он-то и содержит значения углов наклона в градусах. Поэтому делаем финальный штрих и приводим событие к виду:
Все готово! Думаю, понятно, что виртуальный смартфон вы повертеть не сможете. Поэтому для тестирования вам понадобится реальный аппарат. Запускаем, вертим наш смартфон и следим за цифрами.
Если кому-то понадобится, то выкладываю apk сделаный по примеру.
Надеюсь, пост оказался полезным и понятным для вас!
UPD: Как оказалось, можно протестировать и в эмуляторе. Спасибо BlackStream за ссылку!
Источник
Андроид для снятия показаний
Краткое описание:
Удобное приложение для учёта коммунальных услуг, показаний счётчиков и платежей.
Описание:
Возможности программы:
— Неограниченное число счетчиков и услуг
— Учет услуг без счетчика (по нормативу или площади)
— Детальная статистика расходов по месяцам
— Поддержка многотарифных счетчиков
— Расчёт услуг по формуле
— История показаний и тарифов по месяцам
— Голосовой ввод показаний
— Графики и диаграммы платежей и потребления
— Фонарик для подсветки при снятии показаний
— Напоминания об оплате коммунальных услуг, снятии показаний и др.
— Отправка показаний на электронную почту
— Отправка показаний с помощью СМС или мессенджеров
— Формирование QR-кода для быстрой оплаты через платёжный терминал
— Печать таблицы показаний на принтере с помощью Cloud Printing
— Экспорт показаний за выбранный период в CSV файл
— Фотографии квитанций
— Бекап по требованию и по расписанию на локальное устройство или в облако (Google Drive и Dropbox)
— Виджет
— Поддержка нескольких адресов (квартир)
— И много чего ещё!
Бесплатная (Lite) версия программы обладает ограничением на количество счетчиков и услуг (не более двух).
Русский интерфейс: Да
Разработчик: Alexander Krutov
Домашняя страница: http://domometer.ru/
Справка по программе (в процессе создания): http://domometer.ru/help
Lite версия в Google Play: DomoMeter Lite
Полная версия в Google Play: DomoMeter
Инструкция по покупке полной версии через Google Play: Покупка платных программ в Google Play
Инструкция, если не работают уведомления или резервная копия по расписанию на оболочке MIUI
Восстановлене бэкапа на Android 11
Скачать:
версия: 3.8.1 Lite DomoMeter-lite-3.8.1.apk ( 3.83 МБ )
Источник
AliveCor Mobile ECG. Снимаем ЭКГ прямо на смартфоне
За последние несколько лет рынок носимой электроники буквально наводнили всевозможные фитнес-трекеры и пульсометры, позволяющие синхронизировать данные о частоте сердечных сокращений со смартфоном. Те, кто не прочь переплачивать за стиль и не самые пригодные в реальной жизни маркетинговые «вкусности», выбирают девайсы наподобие Jawbone UP3; те же, кто хочет заполучить качественный фитнес-трекер с пульсометром и базовыми функциями за минимальную плату, не думая приобретают Xiaomi Mi Band 1S. А если финансы позволяют взять Jawbone UP3, внешний вид устройства особо не волнует, а точность измерений волнует особо, то едва ли не лучшим вариантом выступит зарекомендовавший себя Mio Alpha 2.
Но что, если простого пульсометра мало и необходимы более подробные данные об активности сердца — особенно, если с ним имеются проблемы? Ведь тот же Mio Alpha вряд ли расскажет о наличии у своего владельца, скажем, мерцательной аритмии.
AliveCor Mobile ECG
Интересное решение предлагает американская компания AliveCor. Она утверждает, что разработала простое и инновационное устройство для снятия ЭКГ и получения диагноза прямо на iOS-устройстве или Android-смартфоне всего за 30 секунд. Зарождающийся в голове читателя скепсис, вероятно, будет развеян тем фактом, что AliveCor Mobile ECG прошел клинические испытания и был одобрен FDA (Управление по контролю качества пищевых продуктов и лекарственных препаратов США), а также прошел сертификацию в Европейском Союзе. Кроме того, он получил многочисленные положительные отзывы от экспертов.
AliveCor Mobile ECG с чехлом
Важно отметить, что в медицинском учреждении при записи ЭКГ, как правило, используется 12 отведений, и в этом смысле одноканальный AliveCor Mobile ECG, безусловно, не заменит собой врача. И тем не менее он сослужит добрую службу всем тем, кто имеет проблемы с сердцем. Но обо всем по порядку.
AliveCor Mobile ECG существует на рынке уже не первый год. В обзоре мы рассмотрим последнее, третье поколение гаджета, ставшего дешевле и компактнее предыдущих моделей. Данный гаджет можно просто прилепить к задней панели смартфона, плеера iPod Touch или планшета (благо, толщина здесь всего несколько миллиметров), но есть и вариант в форм-факторе чехла для смартфона; такой стоит на $10 дороже — $85 против $75. Сам чехол всегда можно докупить отдельно. В любом случае, пользователь не обременяет себя ношением дополнительного гаджета на запястье или в кармане, или же на груди.
AliveCor Mobile ECG поставляется в небольшой и приятной на вид коробке, в которой нет ничего лишнего. В данном случае имеем само устройство плюс чехол из грубого пластика. Мануала в комплекте почему-то не обнаружилось (вот уж действительно — ничего лишнего), но он есть в приложении и на сайте.
На лицевой стороне AliveCor Mobile ECG располагается пара больших электродов, которые, собственно, и отвечают за мониторинг сердечной активности. Кстати, информация передается не по Bluetooth, а посредством ультразвуковых волн, которые улавливаются микрофоном смартфона. Такой вариант значительно облегчает использование девайса, не говоря уже об энергоэффективности такого решения. По данным производителя, батарейка формата CR2016 в среднем держит заряд в течение двух (!) лет. Это обычная съемная литиевая батарея, которой питаются многие наручные часы.
Итак, надеваем чехол на старенький, но надежный iPhone 5 (не реклама!) и отправляемся в App Store. И тут нас ждет неприятный сюрприз. Программа AliveCor доступна только для iTunes-аккаунтов из США, Канады, Великобритании, Ирландии, Индии и Австралии. Впрочем, несложно создать американский аккаунт в дополнение к русскому и использовать их на смартфоне одновременно. После скачивания программы нас попросят зарегистрироваться, указать свои данные (пол, возраст, вес и рост, физическая активность и другие) и сделать тестовую электрокардиограмму, чтобы ее мог проверить квалифицированный врач — бесплатно и прямо в приложении. Его анализ позволит AliveCor быть более точным в будущем. Ждать результата придется несколько часов или даже сутки, и в течение этого периода использовать приложение не получится. Однако после этого необходимость в подобных проверках отпадает, и Alivecor делает свою работу за считанные секунды. Что касается содержимого анализа, сделанного, к слову, партнером AliveCor, компанией CompuMed, то выглядит все так:
Для того чтобы сделать ЭКГ, нужно просто запустить программу и привести смартфон в горизонтальное положение (кнопка home должна быть справа), прислонившись к электродам пальцами обеих рук. Все. Даже нажимать ничего не надо. Есть и альтернативные варианты расположения Mobile ECG: смартфон можно прислонить к грудной клетке или же положить на левое колено. Программа автоматически начнет снимать данные, после чего тут же выдаст краткое заключение. К нему можно вручную добавить симптомы (тревога, бессонница головокружение и т.д.), недавнюю активность или небольшую заметку. Всю эту информацию можно отправить на проверку сертифицированному в США кардиологу — опять же, прямо через приложение. Только на сей раз придется доплатить. За $12 ЭКГ проверит доктор медицины со стажем минимум в двенадцать лет, да еще и выпишет рекомендации. Если заплатить $5, данные отправятся врачу-лаборанту, который даст предварительную оценку состояния без рекомендаций, зато сделает свою работу в течение 30 минут (или в течение 24 часов — если раскошелитесь лишь на $2). Конечно, имеется возможность распечатать ЭКГ, отправить его по e-mail своему врачу или сохранить в формате PDF. Все ЭКГ хранятся в виде списка в разделе «Journal». Программа может хранить данные сразу нескольких человек. Для этого после снятия ЭКГ нужно лишь указать, кто именно его делал — зарегистрированный в приложении «пациент» или кто-то другой.
Подводя итоги, стоит сказать, что AliveCor Mobile ECG, конечно же, не заменит собой врача — и об этом честно предупреждает сама компания, — но значительно упростит жизнь тем, кто имеет проблемы с сердцем. Людям, далеким от медицины, приложение-компаньон простыми словами (правда, на английском) объяснит, что именно с их сердцем не так, а также уведомит о необходимости срочно обратиться к врачу. Кроме того, все записываемые данные так или иначе можно будет показывать своему кардиологу, чтобы он имел возможность отслеживать состояние пациента.
В целом AliveСor Mobile ECG оставил впечатление инновационного и действительно полезного гаджета, который, ко всему прочему, до безобразия прост в использовании. Неудивительно, что для многих людей он уже стал незаменимым аксессуаром в повседневной жизни. Официально AliveCor Mobile ECG в России не продается, но никто не запрещает заказать его на ebay. Напомню, что гаджет оценен производителем в $75.
Источник
Работа с датчиками в Android, или сервис для записи показаний с акселерометра
Введение
Год назад, на хабре публиковалась статья «Собираем показания датчиков с Android смартфона», где рассматривался способ получения данных с акселерометра (кстати говоря, есть пост более старый, в котором рассказывается все то же самое). Недавно передо мной была поставлена похожая задача. Необходимо было создать приложение (решил назвать его «Sensor Logger»), записывающее показания с акселерометра в файл в фоновом режиме. В данной статье постараюсь показать, как можно использовать сервисы и намерения, как работать с текстовыми файлами, а также каким образом отправлять данные из сервиса в Activity.
Рассказывать о снятии показаний с датчиков, классах SensorEventListener и SensorManager не вижу особого смысла, т.к. привел выше две статьи, в которых подробно об этом говорится.
Предполагается, что для читателя данный проект будет являться учебным, поскольку для меня он именно таким и являлся. До текущего момента я никогда не писал на Java и не работал с Android SDK.
Как оказалось, не все так просто
В приведенных выше статьях рассматривались примеры, когда показания датчиков снимались в главном Activity. Они оказались лишь отчасти применимыми к моей задаче. Ибо есть ложка дегтя: жизненный цикл Activity. Очевидно, что не удастся записывать в файл данные в фоновом режиме, если этим будет заниматься класс Activity, поэтому, прочитав ряд статей, было решено написать сервис, который и будет заниматься записью показаний датчиков.
Про сервисы в Android
В Android существует класс Service, который позволяет выполнять задачи приложения в фоновом режиме (стоит отметить, что сервис и Activity работают в одном потоке) в то время, когда телефон заблокирован, или приложение свернуто. Сервис не требует наличия UI, но он может передавать информацию в Activity (например для отображения) или другие сервисы.
Запуск сервиса, получение показаний с акселерометра, запись в файл
Рассмотрим процесс запуска сервиса (метод onStartCommand )
При запуске сервиса происходит инициализация объекта типа SensorManager (переменная sm ). Данный класс в Android предназначен для работы с датчиками (об этом можно почитать в приведенных статьях во введении, а также в документации).
На следующем этапе сервис получает имя директории (с помощью Intent — намерения), в которую необходимо записывать файлы с показаниями (в случае не существования таковой, программа создаст необходимую папку) и открывает для записи файл, именем которого являются дата и время запуска сервиса. За генерацию имени файла отвечает метод currentDateToString , возвращающий дату и время в виде строки.
После открытия файла начинаем снимать показания с датчиков.
При изменении состояния какого-либо из датчиков вызывается метод onSensorChanged , внутри которого идет проверка на то, на каком датчике произошло событие, и если это акселерометр, то показания, которые пришли, записываются в файл и оправляются в Activity приложения (создается новое намерение и вызывается функция sendBroadcast ):
В Activity прием сообщений от сервиса реализован при помощи класса BroadcastReciever, который принимает намерения, отправленные с помощью функции sendBroadcast . Рассмотрим метод rec_start из класса Activity:
Объекты button_rec_off, button_rec_on являются объектами класса Button , а x_label, y_label и z_label — TextView .
В данном методе происходит запуск сервиса, инициализация BroadcastReciever и создание фильтра намерений (класс IntentFilter).
Стоит отметить, что в моем коде также предусмотрены методы для остановки процесса записи. Исходный код и *.apk можно скачать в репозитарии. Ссылка ниже.
Источник