Мобильное приложение системы управления безопасностью предприятия

Ознакомление с этапами разработки модуля системы "Мобильное приложение системы управления безопасностью предприятия". Определение и характеристика преимуществ операционной системы android. Рассмотрение скриншота рабочего окна Visual Studio 2017.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.08.2018
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Рис. 2.9 - Видеорегистратор

Основные параметры видеорегистраторов:

Количество каналов. Это один из главных параметров. В основном распространяется четыре основных варианта: 4, 8, 9 и 16-ти канальные DVR видео регистраторы.

Скорость записи. Обычные модели могут иметь видеоряд от 3 и более кадров в секунду на 1 канал. Профессиональные видеорегистраторы имеют видеоряд, равный 25 кадров в секунду на каждый канал. Это значит, что движения в кадре камеры будут плавные, а качество изображения соответствует телевизионному качеству.

Разрешение записи. Еще один важный параметр видеорегистратора. Принято выделять три основные типа разрешения: 720х576, 720х288, 360х288 пикселей.

Работа регистратора в сети (локальная сеть или Интернет). Дает возможность получать картинку удаленно.

2.3.3 Система контроля управления доступом (СКУД)

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

К исполнительным устройствам СКУД относятся механизмы и конструкции, непосредственно открывающие/блокирующие доступ в помещение, здание или на территорию охраняемого объекта.

Исполнительные устройства СКУД (так же представлены на Рис. 2.10):

· электромеханические замки;

· электромагнитные замки;

· электрические защелки;

· картоприемники;

· калитки;

· турникеты;

· шлагбаумы;

· шлюзовые кабины.

Рис. 2.10 - исполнительные устройства СКУД

Электромеханические дверные замки и защелки являются наиболее распространенными запирающими устройствами СКУД, так как они просты в эксплуатации и надежно блокируют доступ в помещение несанкционированным посетителям. Принцип их действия довольно прост: когда на контактные клеммы подается напряжение (9-16 вольт), срабатывает электромагнитное реле, открывающее дверь.

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

Турникеты. Могут быть как поясными, так и полноростовыми. Если для человека разрешен доступ на данную территорию, то турникет не заблокирован, и, поворачиваясь, открывает проход. Так как поясные турникеты невысоки, через них легко перепрыгнуть, и устанавливать их следует только рядом с пропускным пунктом охраны. Полноростовые турникеты используют на дальних КПП, они работают в автоматическом режиме открывания/закрывания.

Шлюзовые кабины. Все шлюзы, используемые в СКУД, делятся на два типа: шлюзы-тамбуры и шлюзы-ротанты.

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

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

Шлюзы-ротанты имеют более высокую пропускную способность. В отличие от шлюза-тамбура, в нем вместо двух обычных дверей установлена одна поворотная дверь.

3. Разработка модуля системы «мобильное приложение системы управления безопасностью предприятия»

3.1 Техническое задание и выбор инструментов разработки

3.1.1Техническое задание

Была поставлена задача разработать мобильное web-приложение системы управления безопасностью предприятия.

Разрабатываемое приложение должно выполнять следующие функции:

· аутентификация и пользователей;

· отображение пользователя и его статуса на карте;

· возможность пользователем подать сигнал тревоги / бедствия диспетчеру (тревожная кнопка);

· автоматическое отключение приложения в конце рабочего дня пользователя.

3.1.2 Инструменты для разработки

Visual Studio. В качестве среды для написания кода мной была выбрана среда разработки Microsoft Visual Studio 2017 Comunity с плагином Xamarin.

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

· приложения для мобильных устройств: Windows Phone, iOS, Android;

· веб-сайты и веб-службы на основе многих известных платформ;

· консольные приложения;

· игры и графические приложения для различных устройств;

· собственные инструменты для Visual Studio;

· приложения на языках Visual Basic, C, C++, C#, F#, Python, JavaScript.

На рис.3.1 представлен скриншот рабочего окна Visual Studio 2017.

Рис.3.1 -- Скриншот рабочего окна Visual Studio 2017

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

Фреймворк - программная платформа, которая определяет структуру программного продукта. Облегчает разработку и объединение компонентов большого программного продукта. В отличии от библиотеки, используемой просто как подпрограмма с необходимым функционалом, фреймворк задает правила построения архитектуры приложения с начального этапа разработки, т.е. «каркас».

Xamarin Framework. В качестве основы для разработки приложения мной был выбран Xamarin Framework. Достоинства Xamarin:

· использование языка C#;

· поддержка среды разработки Visual Studio;

· поддержка LINQ (Language Integrated Query) - язык запросов к объектам базы данных.

· поддержка многих устройств и их эмуляторов

Xamarin -- это фреймворк для кроссплатформенной разработки мобильных приложений: iOS, Android, Windows Phone, с использованием языка C#. Цель его создания заключалась в том, чтобы дать разработчикам мобильных приложений возможность писать код на привычным для них языке C#, позволяя использоваться все особенности языка. При этом разработчик имеет полный доступ ко всем возможностям SDK платформы и механизму создания интерфейса, получая на выходе приложение, которое, ничем не отличается от приложений, написанных традиционными методами.

Фреймворк состоит из нескольких основных частей:

· Xamarin.IOS - библиотека классов C#, предоставляющая разработчику доступ к iOS SDK, для написания под iOS;

· Xamarin.Android - библиотека классов C#, предоставляющая разработчику доступ к iOS SDK, для написания под Android;

· компиляторы для Android и iOS;

· IDE Xamarin Studio;

· плагин для Visual Studio.

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

В Xamarin разработка интерфейса пользователя (UI) ведется при помощи стандартных средств и компонентов для каждой платформы. Разработка UI для Android происходит напрямую в коде, либо описанием элементов в xml. Редактирование файлов xml с описанием интерфейса происходит в среде Visual Studio.

Xamarin.Forms - часть Xamarin, которая позволяет кроссплатформенно создавать пользовательский интерфейс с помощью XAML. Xamarin без Forms нельзя использовать для кроссплатформенного UI, в остальных случаях можно создавать интерфейс с помощью классов-обёрток над нативными классами.

В Xamarin так же имеется свой встроенный магазин дополнительных компонентов - Xamarin Components, разрабатываемые как официальными лицами Xamarin, так и сторонними разработчиками. Компоненты могут быть представлять собой, как и дополнительные элементы интерфейса пользователя, так и целые библиотеки классов. Эти компоненты можно удобно добавлять в свой проект.

Xamarin подойдёт для разработчиков, которые уже программирует на C# и хотят начать разработку мобильных приложений, без дополнительного изучения и установки новых языков и сред разработки.

Genymotion. В качестве эмулятора устройства Android мной был выбран Genymotion - это очень быстрый эмулятор, построенный на основе VirtualBox, который включает в себя настроенные образы Android. Распространяется на платформах Linux, Windows и Mac OS X и для личного использования является бесплатным, но также имеет платную версию, предоставляющую расширенный спектр возможностей.

Genymotion позволяет эмулировать сразу несколько разных устройств с раздельной настройкой CPU и объёма RAM для каждого устройства. Позволяет реализовать многие функции смартфонов Android, такие как:

· эмуляция соединение WiFi или интернет через 3G, GPRS и пр.;

· поддержка аппаратного ускорения с OpenGL, режим полноэкранного просмотра;

· поддержка утилит для отладки Android;

· плагины к Eclipse и Android Studio для разработчиков мобильных приложений;

· возможность установки приложений из Google Play;

· возможность изменять IMEI виртуального устройства;

· возможность произвести полный сброс виртуального Android устройства (сброс к заводским настройкам);

· возможность поворота экрана.

На Рис. 3.2 представлены скриншоты основного окна программы Genymotion (справа) и запущенного эмулятора устройства Android (слева)

Рис. 3.2 -- Скриншоты основного окна программы Genymotion и эмулированного устройства Android, Windows Phone, iOS.

3.2 Алгоритм работы

Была составлена блок-схема работы приложения, которая показывает логику и функции работы. Блок-схема изображена на Рис. 3.3, Рис. 3,4 и Рис. 3.5.

Размещено на http://www.allbest.ru/

Рис. 3.3 - Блок-схема приложения

Размещено на http://www.allbest.ru/

Рис. 3.4 - Блок-схема приложения (продолжение)

Размещено на http://www.allbest.ru/

Рис. 3.5 - Блок-схема приложения (продолжение)

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

· открыть карту со своим месторасположением и координатами;

· перейти в меню тревожной кнопки, откуда можно послать сигнал о помощи диспетчеру

Узел A - показывает, что происходит проверка нажата ли тревожная кнопка или нет. В случае нажатия - отправляет сигнал на пульт диспетчера и выводит пользователю соответствующее сообщение. Если же кнопка не нажата, то переходит в режим ожидания.

Узел B показывает, как работает функция Автоматическое отключение в конце рабочего дня. Таймер проверяет время и если рабочий день закончился, то приложение через определенное время автоматически закрывается. мобильный android безопасность скриншот

3.3 Реализация

Сделаем самое первое окно приложения - окно аутентификации, которое будет появляться при запуске приложения.

Для этого добавим в наш проект новый макет Login.axml и поместим его в папку Resourses\layout. Теперь напишем код:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="450"

android:minWidth="25px"

android:minHeight="25px"

android:background="@color/great">

<ScrollView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:minWidth="25px"

android:minHeight="25px"

android:defaultMinSizeSet="true">

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:id="@+id/linearLayout2">

<TextView

android:text="Введите персональные данные"

android:textSize="25dp"

android:textAppearance="?android:attr/textAppearanceLarge"

android:gravity="center_vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="20dp"

android:layout_marginBottom="20dp"

android:id="@+id/textView1"

android:textColor="#dae8da"

android:textColorHint="@color/grey" />

<EditText

android:background="@android:drawable/bottom_bar"

android:inputType="textPersonName"

android:layout_width="match_parent"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

android:layout_height="wrap_content"

android:id="@+id/input_login"

android:hint="Имя"

android:textStyle="bold" />

<EditText

android:hint="Пароль"

android:background="@android:drawable/bottom_bar"

android:inputType="textPassword"

android:layout_width="match_parent"

android:layout_marginTop="20dp"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

android:layout_height="wrap_content"

android:id="@+id/input_password"

android:textColor="@color/grey"

android:textStyle="bold" />

<TextView

android:textAppearance="?android:attr/textAppearanceLarge"

android:layout_gravity="center_horizontal"

android:layout_marginTop="10dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#a5a5a5"

android:id="@+id/lb_restore_pass" />

<FrameLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_marginTop="50dp"

android:layout_marginBottom="30dp"

android:id="@+id/frameLayout2">

<Button

android:background="@drawable/vk_icon"

android:layout_gravity="left"

android:layout_marginLeft="50dp"

android:layout_marginRight="30dp"

android:layout_width="50dp"

android:layout_height="50dp"

android:id="@+id/auth_vk_btn" />

<Button

android:background="@drawable/google_icon"

android:layout_gravity="center"

android:layout_marginLeft="30dp"

android:layout_marginRight="30dp"

android:layout_width="50dp"

android:layout_height="50dp"

android:id="@+id/auth_g_btn" />

<Button

android:layout_gravity="right"

android:background="@drawable/fb_icon"

android:layout_marginLeft="30dp"

android:layout_marginRight="50dp"

android:layout_width="50dp"

android:layout_height="50dp"

android:id="@+id/auth_f_btn" />

<Button

android:background="@android:drawable/bottom_bar"

android:text="Вход"

android:layout_gravity="center_horizontal"

android:layout_width="80"

android:layout_marginTop="40dp"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

android:layout_height="match_parent"

android:id="@+id/auth_btn"

style="@style/button_text" />

</FrameLayout>

</LinearLayout>

</ScrollView>

</LinearLayout>

Получается простой и понятный интерфейс окна аутентификации, показанный на Рис. 3.6

Рис. 3.6 - Окно аутентификации приложения

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

-- Table Users

CREATE TABLE Users (

id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,

Login TEXT(255) NOT NULL,

Password TEXT(255) NOT NULL

)

На следующем этапе разработаем модуль отслежки и отправления координат, для этого сначала разрешим нашему приложению функцию доступа к точному местоположению устройства, показанную на Рис. 3.7.

Рис. 3.7 - разрешение на точное местоположение

Аналогичным образом разрешим все остальные необходимые функции, такие как: доступ к сети интернет, Wi fi , отправка сигналов, работа в фоновом режим и т.п.

Создадим новый модуль coordinates.cs и напишем в него соответствующий код:

public class GPSTracker extends Service implements LocationListener {

private final Context mContext;

boolean isGPSEnabled = false;

boolean isNetworkEnabled = false;

boolean canGetLocation = false;

Location location; // location

double latitude; // latitude

double longitude; // longitude

double altitude;

double speed;

double bearing;

protected LocationManager locationManager;

public GPSTracker(Context context) {

this.mContext = context;

getLocation();

}

public Location getLocation() {

try {

locationManager = (LocationManager) mContext

.getSystemService(LOCATION_SERVICE);

isGPSEnabled = locationManager

.isProviderEnabled(LocationManager.GPS_PROVIDER);

isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

if (!isGPSEnabled && !isNetworkEnabled) {

else {

this.canGetLocation = true;

if (isNetworkEnabled) {

locationManager.requestLocationUpdates(

LocationManager.NETWORK_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

Log.d("Network", "Network");

if (locationManager != null) {

location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (location != null) {

latitude = location.getLatitude();

longitude = location.getLongitude();

altitude = location.getAltitude();

speed = location.getSpeed();

bearing = location.getBearing();

}

}

}

if (isGPSEnabled) {

if (location == null) {

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

Log.d("GPS Enabled", "GPS Enabled");

if (locationManager != null) {

location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (location != null) {

latitude = location.getLatitude();

longitude = location.getLongitude();

altitude = location.getAltitude();

speed = location.getSpeed();

bearing = location.getBearing();}}}}

}

} catch (Exception e) {

e.printStackTrace(); }

return location;

}

public void stopUsingGPS(){

if(locationManager != null){

locationManager.removeUpdates(GPSTracker.this);

}

}

public double getLatitude(){

if(location != null){

latitude = location.getLatitude();}

return latitude;}

public double getLongitude(){

if(location != null){

longitude = location.getLongitude();}

return longitude;}

public double getAltitude(){

if(location != null){

altitude = location.getAltitude(); }

return altitude;}

public double getSpeed() {

if(location != null){

speed = location.getSpeed(); }

return speed;}

public double getBearing(){

if(location != null){

bearing = location.getBearing();}

return bearing;}

public boolean canGetLocation() {

return this.canGetLocation;}

public void showSettingsAlert(){

AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

alertDialog.setTitle("GPS is settings");

alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,int which) {

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

mContext.startActivity(intent);}});

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();}});

alertDialog.show();}

public Override void onLocationChanged(Location location){ }

Public Override void onProviderDisabled(String provider) { }

Public Override void onProviderEnabled(String provider) { }

public Override void onStatusChanged(String provider, int status, Bundle extras) { }

Public Override IBinder onBind(Intent arg0) { return null;}}

Для использования полученного модуля необходимо создать Activity со следующей конструкцией:

gps = new GPSTracker(StartActivity.this);

if(gps.canGetLocation()){

double latitude = gps.getLatitude();

double longitude = gps.getLongitude();

double altitude = gps.getAltitude();

double speed = gps.getSpeed();

double bearing = gps.getBearing();

double speedLimitA = ((10*1000)/(60*60));

Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude

+ "\nLong: " + longitude

+ "\nAlt:" + altitude, Toast.LENGTH_LONG).show();

Intent intent = new Intent(this, Logik_Activity.class);

intent.putExtra("alt",altitude);

intent.putExtra("speed",speed);

intent.putExtra("bearing",bearing);

if (speed < speedLimitA){

startActivity(intent); }

// if speed > 0 then AAA else BBB

}else{

gps.showSettingsAlert(); }

На Рис. 3.8 представлен получившийся модуль отслеживания местоположения пользователя.

Рис. 3.8 - Окно работающего модуля отслеживания местоположения

Заключение

В ходе выполнения бакалаврской работы было разработано приложение системы управления безопасностью предприятия, под управление ОС Android.

Разработанное приложение полностью удовлетворяет все поставленные требования и выполняет следующий функционал:

· аутентификация пользователя;

· отслеживание местоположения пользователя и отметка его на карте;

· подача тревожного сигнала на пульт диспетчера;

· автоматическое выключение в конце рабочего дня.

В ходе разработки проекта была изучена предметная область. Были изучены методы и способы разработки приложений под операционную среду Android. Была изучена документация по Framework Xamarin. Все изученные материалы позволили разработать требуемое приложение и функционал.

Была разработана схема взаимодействия модулей, необходимый интерфейс и модули для обеспечения требуемого функционала.

Данное приложение решило проблему, обусловившую ее актуальность.

В будущем приложение можно модифицировать, добавив выбор класса тревоги (пожар, нападение, потоп и т.п.).

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.