Giter Site home page Giter Site logo

vladimir127 / sensors Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 363 KB

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

Java 100.00%
activity alertdialog imageview java listview rotateanimation sensormanager

sensors's Introduction

Sensors

Приложение было разработано в 2021 году в качестве расчётно-графической работы по мобильным информационным технологиям.

Мобильное приложение взаимодействует с датчиками следующих типов:

  • Датчик ориентации (TYPE_ORIENTATION)
  • Акселерометр (TYPE_ACCELEROMETER)
  • Датчик освещения (TYPE_LIGHT)
  • Барометр (TYPE_PRESSURE)
  • Датчик температуры окружающей среды (TYPE_AMBIENT_TEMPERATURE)
  • Измеритель относительной влажности (TYPE_RELATIVE_HUMIDITY)

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

Разработанное мобильное приложение, взаимодействующее с датчиками, состоит из четырёх экранов (активностей, Activities)

Главный экран приложения

При запуске приложения открывается главный экран (MainActivity)

Экран содержит список сенсоров, который представлен элементом ListView. При касании каждого пункта списка откроется новый экран, отображающий показания выбранного датчика.

Компас

При выборе пункта «Компас» запускается операция CompassActivity, и на экране отображается компас с вращающейся стрелкой, а также надписью, указывающей точное отклонение от севера в градусах.

Для отображения циферблата и стрелки используются два компонента ImageView, а для отображения надписи – элемент TextView.

Доступ к датчикам осуществляется с помощью объекта SensorManager. Когда показания датчика меняются, вызывается метод onSensorChanged(); в качестве параметра в этот метод передаётся объект SensorEvent. Этот объект содержит массив values, в котором и хранятся изменённые показания датчика. В данном случае мы получаем ориентацию устройства относительно севера в градусах, выводим это значение в текстовую надпись на экран, а также настраиваем и запускаем анимацию вращения (RotateAnimation), которая повернёт изображение стрелки на нужный угол.

Акселерометр

Ещё один важный датчик в любом Android-устройстве – это акселерометр. Для демонстрации его работы используется третий экран приложения – AccelerometerActivity, который можно открыть, выбрав пункт «Акселерометр» в списке на главном экране. На белом экране появится изображение небольшого серого шарика, который будет перекатываться по экрану из стороны в сторону в зависимости от угла наклона устройства.

Данная активность не имеет собственного XML-макета: для задания внешнего вида здесь используется отдельный класс BallView, унаследованный от класса View. В данном случае в методе onSensorChanged() мы получаем не одно, а два значения – ускорения по осям X и Y. Далее вызывается метод updateBall(), в котором на основании полученных ускорений вычисляется скорость и смещение шарика по осям X и Y, а затем, наконец, вычисляются его координаты, и шарик перерисовывается.

Другие датчики

Кроме компаса и акселерометра в приложении демонстрируется работа ещё четырёх датчиков: датчика освещённости, термометра, барометра и измерителя влажности (гигрометра). Поскольку показания всех четырёх датчиков считываются и отображаются одним и тем же способом, работа с этими датчиками выполняется в одной активности SensorActivity, только в зависимости от выбранного датчика в неё передаются те или иные входные данные: тип датчика, название датчика, название измеряемой величины, а также название единицы измерения для отображения. Например, отображение показаний датчика освещённости представлено на рисунке ниже.

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.