- •Дипломный проект
- •Задание на выполнение дипломного проекта
- •Список использованных сокращений
- •Введение Ут.
- •Ут. Ут. 1. Аналитическая часть
- •1.1 Обзор и сравнительный анализ существующего по
- •1.9 Подведение итогов анализа программ
- •2. Проектная часть
- •2.1 Программная реализация
- •2.2 Среда разработки
- •2.3 Создание первого проекта
- •2.4 Изучение составляющих проекта
- •2.5 Реализация «ping» в Android
- •2.6 Разработка пользовательского интерфейса основного экрана
- •2.7 Разработка интерфейса добавления/изменения узла
- •2.8 Разрабо тка возможности удаления узла
- •2.8 Разработка возможности сохранения карты
- •2.9 Разработка возможности загрузки карты
- •2.10 Реализация «быстрого пинга»
- •2.11 Реализация «консоли»
- •2.12 Реализация сканера сети
- •2.13 Подведение итогов разработки программы
- •3. Экономическая часть
- •3.1 Определение трудоемкости работ
- •3.2 Расчет затрат
- •3.3 Расчет эксплуатационных затрат
- •3.3 Расчет окупаемости проекта
- •3.4 Итоги экономических расчетов
- •Заключение
- •Список использованных источников
2.5 Реализация «ping» в Android
Для реализации «ping» в Android можно пойти 3 путями:
Применение функций Java;
Взаимодействие с командной строкой Android;
Применение C# кода.
В Java применяются функции:
java.net.InetAddress.getByName(String host)-указание узла для последующих действий,
java.net.InetAddress.isReachable(int timeout)- проверка доступности узла в пределах указанного времени ожидания ответа. Тип возвращаемого значения Boolean.
Достоинства данного метода в простоте реализации и скорости выполнения, а недостатком является его ненадежность в системе Android, а также невозможность проверять наличие связи с DNS. Были отмечены случаи предоставления ложной информации. Вышеприведенные недостатки замечены только в Android.
Взаимодействие с командной строкой более сложное, т.к. полученные результаты представлены для восприятия информации конечным пользователем. Данная особенность отлично подойдет для возможности «быстрого пинга». Для использования командной строки в основной программе, где нет необходимости в обширном отчете о «пинге» необходимо дописать обработчик.
Для начала нужно получить доступ к консоли, это делается следующим способом:
Runtime runtime = Runtime.getRuntime(); // Позволяет Java-приложениям взаимодействовать с окружающей средой, в которой они работают.
Process proc = runtime.exec("ping -c 1 " + host); // Выполнение команды в командной строке с параметром –c 1 для посылки 1 запроса на адрес host.
Если не возникнет ошибка необходимо получить результат:
proc.getInputStream(); - возвращает объект,
типа InputStream, который нужно преобразовать
в строку и получить время ответа. Сравнить
его с максимальным временем ожидания
из настроек узла и вернуть результат.
Достоинства данного метода: более высокая надежность и возможность работы с DNS. К недостаткам можно отнести сложность в получении информации о соединении и медлительность взаимодействия с командной строкой Android.
Применение C# кода возможно, если установлен и настроен Android NDK. Данный способ применен не будет, т.к. процесс установки и настройки работы с C# в Android очень трудоемкий, и с помощью 2 последовательно выполняющихся методов из Java уже достигнута необходимая надежность.
2.6 Разработка пользовательского интерфейса основного экрана
От приложения требуется отображение карты сети. Стандартных элементов для этого нет, поэтому необходимо написать свой объект пользовательского интерфейса. В Java имеется класс для отрисовки графики «SurfaceView». Все элементы на карте будут отображаться с помощью вышеприведенного класса.
Необходимые визуальные элементы:
Фон – у класса «SurfaceView» есть одна особенность, в его составе нет функции очищающей экран. Если рисовать элементы без предварительной заливки фона, все действия с элементами будут отображаться на экране, и это будет выглядеть как шлейф (при перемещении узла) и т.п.
Границы экрана – при выходе элементов за границы видимости, будет нарисована линия в той части экрана за которую «ушел» узел;
Узлы – состоят из иконки узла (8 разновидностей) и текстовой надписи с его названием. Также необходимо отображать значок о потере связи;
Связи – линии, соединяющие выбранные узлы.
Отрисовка фона на экране выполняется следующим образом:
canvas.drawColor(Color.DKGRAY);
Объект canvas позволяет
выполнять операции рисования при
формировании изображения, которое будет
отображено на экране. Функция
canvas.drawColor()
заполняет экран выбранным цветом, в
данном случае цвет берется из класса
Color, который имеет несколько
предустановленных цветов, но можно
использовать и свои цвета с помощью
функций, входящий в этот класс. Color.DKGRAY
– это темно серый цвет, он не будет
чрезмерно напрягать глаза пользователей.
Рисовать линии позволяет метод, входящий в класс Canvas:
Canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint);
Где:
startX – положение начальной точки по оси X;
startY – положение начальной точки по оси Y;
stopX – положение конечной точки по оси X;
stopY – положение конечной точки по оси Y;
paint – класс, имеющий в своем составе все визуальные характеристики линий и текста.
Наиболее сложный элемент пользовательского интерфейса это «узел», так как он содержит все его характеристики, выполняет отрисовку его на экране и хранит переменные, описывающие состояние и свойства узла:
mName – имя узла;
mIp – Ip адрес узла;
mType – тип узла, используется для различного отображения разных узлов на карте сети;
mComment – пользовательский комментарий;
mX – положение узла на экране по X;
mY – положение узла на экране по Y;
mPicOn – рисуемое изображение №1доступного узла;
mPicOn2 – рисуемое изображение №2 доступного узла;
mPicOff – рисуемая картинка для недоступного узла;
mWarning – изображение, визуально предупреждающее о потере связи;
mStatus – текущий статус узла (на связи или нет)
mTimeResponse – время ожидания ответа на команду «ping»;
isSelected – индикация при выборе узла;
isPlayingSounds – флаг, проигрывать звуковое предупреждение или нет;
isWasOn – была ли с узлом связь (используется для предупреждений оп потере связи);
isShowWarning –визуальное отображение потери связи.
Для отображения изображений используется функция, входящая в состав класса Canvas:
Canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint), где
bitmap – изображение, декодированное в класс Bitmap;
left – местоположение изображения по координате X;
top – местоположение изображения по координате Y (отсчет начинается с левой верхней точки экрана по направлению вниз;
paint – настройки визуального отображения.
В результате получаем карту сети на экране устройства (Рисунок 2.19)
Рисунок 2.19 Главное окно разрабатываемой программы
Все изображения узлов динамические, т.е. через 1 секунду изменяется картинка для видимости работы программы.
При выборе узла будет показано меню для
узла с возможностью изменить его или
удалить (Рисунок 2.20)
Рисунок 2.20 Меню выбранного узла
