Pull to refresh

Реальное мобильное приложение в Delphi для систем наблюдения

Reading time 10 min
Views 19K
Мы не рекламируем и не продвигаем ни компанию Digifort, ни её продукты. Компания указана, чтобы показать — это не «фейк», не «фотошоп», люди/продукты реальные. В данном техническом интервью будет рассмотрена проблема мобильной разработки глазами «классического destkop-программиста» с большой степенью объективности и непредвзятости. Нельзя, к примеру, говорить о проектировании мостов без анализа ключевых проектов, таких как Golden Gates Bridge. Для пользователей Delphi такой проект, несомненно, пионерский, есть смысл ознакомится с обзором.

Данное интервью — переводное. Эрик, будучи техническим специалистом, тем не менее, отвечал в классическом «западном деловом» стиле и формате, когда публично не принято ругать и резко критиковать. Он старался похвалить Embarcadero и всячески выражал благодарность, поэтому нам пришлось добавить «sugar-free» секцию, чтобы сохранить объективность изложения.


Сегодня мы поговорим с представителем компании Digifort, которого зовут Эрик Флеминг Бонила (Eric Fleming Bonilha). Он – разработчик, а его компания недавно выпустила мульти-платформенную мобильную версию системы, о чем писалось здесь. Мы попросили Эрика поподробнее рассказать о том, как, что, зачем он делал (при соблюдении know-how), а также почему именно Delphi for Android/iOS.

Здравствуйте, Эрик! Чтобы мы могли понять техническую составляющую Вашего проекта, расскажите о системе в целом. Каково её назначение? Это – реальный проект?

Здравствуйте. Я представляю «софтверную» компанию. Наш основной продукт решает задачи в области IP-TV-наблюдения на основе TCP/IP передачи закодированных изображений с аналоговых или IP-камер. Предусмотрена запись для последующего анализа. Технологии Digifort могут быть использованы в качестве основы для реализации анализа видео на предмет соответствия заданным шаблонам для идентификации проблемных ситуаций. Например, можно записывать изображения номеров машин, помещать их в базу данных, распознавать случаи угона. Естественно, можно представить себе и ряд других сценариев использования нашей системы. У нас есть масса продуктов, которые могут быть агрегированы в единое решение для создания замкнутых решений проблем безопасности вплоть до корпоративных потребностей.



Когда и почему Вы начали использовать Delphi в качестве (первичного) инструмента разработки программного обеспечения (ПО)?

Мы начали использовать Delphi в качестве основного инструмента в 2002 году. Тогда мы посчитали Delphi правильным выбором для разработки именно такого ПО. C++ был сложен, компиляция требовала значительного времени, разработка интерфейсов сопровождалась трудоёмкими процедурами, производительность разработчиков была бы недостаточно высокой по сравнению, к примеру, с Visual Bascic, но мы уже тогда любили Pascal.

Изначально вы разрабатывали «настольные» решения?

Да, все наши продукты создавались как «настольные» решения. Основной продукт представляет собой «настольное» приложение, но он включает серверный модуль, который отвечает за управление всей сисемой. Также есть два клиентских модуля: один для администрирования (рабочее место «администратора») и для наблюдения (рабочее место «оператора»), каждый из которых «заточен» под конкретную пользовательскую роль.

image

В чем была необходимость начать мобильную разработку?

Сейчас «писком моды» является мобильность… Всем нужны мобильные приложения, т.к. смартфоны сейчас очень популярны. А мы не хотели отставать от современных трендов. Просто «настольная» система для наблюдения уже не является достаточным, людям нужны мобильные системы. Это есть естественная эволюция потребностей. Наши пользователи желают осуществлять наблюдение и управление с их мобильных устройств.

Насколько мобильные приложения обогатили систему в целом?

Мобильная реализация нашего ПО теперь является фундаментальной частью системы, без чего мы бы потерять много пользователей. Теперь у нас есть целых два мобильных продукта:
  • «Мобильный клиент» Digifort (Digifort Mobile Client);
  • «Мобильная камера» Digifort (Digifort Mobile Camera).

«Мобильный клиент» Digifort позволяет вести удаленное наблюдение и управление камерами в автоматизированном режиме с мобильного телефона. Это – очень важное расширение нашей системы, что позволяет нашим пользователям продолжать получать информация с камер, где бы они ни были. Я даже могу предположить, что есть риск формирования некой зависимости! Я сам грешу тем, что время от времени смотрю, что происходит в офисе, даже когда я дома или нахожусь в командировке (при использовании сети 3g). Этот продукт будет доступен БЕСПЛАТНО для скачивания и будет частью нашего пакетного решения.

«Мобильная камера» Digifort – это новый модуль, который находится в процессе завершения, и он будет «превращать» любое iOS/Android устройство в мобильную камеру! Изображение с мобильного телефона будет «вживую» передаваться на нашу систему наблюдения. Впечатляет, не правда ли? Мы анонсировали этот продукт еще два месяца назад и с тех пор получили ТОННУ запросов. Люди просто жаждут получить этот продукт именно благодаря его функциональности. Наш главный заказчик, который представляет правительственные структуры (органы правопорядка и муниципальные органы), уже оценил большой потенциал таких приложений.

Сколько потребовала от Вас реализация функционального прототипа мобильного приложения? Вам помог опыт работы в «классических» версиях Delphi?

На разработку «Мобильной камеры» Digifort ушло около 2-х недель (не только прототип, но и полнофункциональная версия), включая мобильное приложение и серверный «бэкенд» (backend server), а также систему конфигурирования экранов.

«Мобильный клиент» Digifort потребовал 3 недели, но мы пока его еще не выпустили, т.к. это произойдет в рамках нового общего пакетного решения.

Мы используем Delphi более 13 лет, и это, конечно, сильно нам помогло. Сначала мы несколько растерялись, когда начали использовать «Платформу FM» (FireMonkey), т.к. она была для нас новой. Но через несколько дней мы к ней привыкли и даже полюбили. Нам понравилось, как легко можно достигать потрясающих эффектов в плане создания интерфейсов (по сравнению с VCL).

Как разделяется функционал системы между мобильными и настольными клиентами?

Мобильные решения дополняют настольные. «Мобильный клиент» — это именно удалённый клиент для системы, поэтому мы в него включили только то, что действительно будет востребовано на мобильном устройстве. Например, просмотр изображения с камер и управления ими. Мы не хотим «перегружать» приложение и «перекармливать» пользователей. Реализовали то, что гарантировано будет востребовано и чаще всего используется.

«Мобильная камера» — это отдельный продукт, который агрегирует в себе много полезных функций системы, но и даёт новые качества. Это не просто «перетаскивание настольного функционала» в мир мобильности.

У вас есть код, который совместно используется и в настольных, и в мобильных проектах?

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

Почему так важно иметь мобильную версию системы?

Я бы не сказал, что это важно. Это просто НЕОБХОДИМО. Пользователи вас не поймут, если вы не будете предоставлять им мобильное приложение. В этом случае компания обречена на вымирание.

Вы использовали какие-нибудь сторонние компоненты (если это не большой секрет)? Или обошлись стандартными? Возможно, что-то сами сделали?

Для мобильных приложений – нет. Мы использовали только компоненты, входящие в базовую поставку (Indy для связи по TCP/IP и стандартные компоненты «Плафтормы FM» для всего остального).

У разработчиков вашей компании был опыт мобильной разработки?

Да, несколько лет назад мы создали клиент на основе Java для смартфонов с Windows 6. Тогда у нас не было опыта работы с Java, и мы потратили 4 месяца и привлекли специально обученного разработчика к этой задаче (чтобы во всём разобраться и, наконец, сделать). Много времени ушло на освоение Java 2ME и, конечно, мы сильно выдохлись, изучая новый язык/фреймворк. Хотелось бы тогда иметь Delphi с тем же функционалом для мобильной разработки!

С тем приложением были большие проблемы, мы не могли его сопровождать, т.к. постоянно требовался Java-программист, а тот специалист, который учил нас, уже покинул компанию. Т.к. Windows 6 не оказалась особо популярной в те годы, мы просто «заморозили» проект, хотя это приложение до сих пор работает. Мы умудрились перенести его на Android, но оно далеко от идеала…

Где-то 2 года назад один из наших разработчиков создал «нативное» приложения для iPhone с использованием Objective-C (называется iDigifort). История была примерно такой-же. Много времени потратили на изучение нового языка/фреймворка. Опять, это заняло 4 месяца, чтобы подучиться и разобраться… а потом опять получить кучу проблем. Главная из них: у нас не было поддержки Android, который за последние 2 года стал мега-популярным…

Какие преимущества вы получили, выбрав Delphi для мобильной разработки?

Сказать по-честному, я давно мечтал о такой версии Delphi, чтобы с ней я смог легко разрабатывать мобильные приложения. Мои мечты сбылись с XE5.

После покупки XE5 мы решили попробовать использовать данную версию в качестве основной. Отбросив скептицизм, мы окунулись в новый мир «Платформы FM» (FireMonkey). Мы поняли, насколько просто делать красивые интерфейсы пользователя. Все эти «бантики и рюшечки», о которых мечтают современные «мобильные пользователи». Нам эти возможности показалось очень мощными (если сравнивать с тем, как сложно было сделать красивый и яркий инструмент в прошлом с VCL).

Таким образом, мы посовещались и решили оставить разработку удаленного клиента на Objective-C для iPhone и попытаться сделать всё на основе единого кода, компилируя приложения для Android и iOS. Это позволило нам одной командой разрабатывать продукты и для «настольного», и «мобильного» применения, и нам не пришлось разделять проекты между отдельными командами.

Это сработало… Все наши пользователи, которые уже начали тестировать новые версии «Мобильного клиента» Digifort, сделанного в XE5, прислали нам очень позитивные отзывы. Помимо нового функционала они особо отметили красивый внешний вид и удобный интерфейс. На нас это сработало поистине прекрасно.

Что касается лично меня, то для меня главное – возможность быстро создавать мобильные приложения в Delphi XE5 и компилировать их под основные платформы (наши пользователи пока не спрашивают про Windows Phone, то же самое можно сказать про Blackberry). Пока мы обходимся единой командой, но покрываем различные платформы. Когда мы добавляем новую возможность, она появляется для всех поддерживаемых платформ. МЫ реально экономим деньги и выпускаем продукт быстрее!!!

image

“Sugar-free” Q&A session


Как Вам удалось сделать такой красивый «список» в Вашем интерфейсе?

Да, список у нас явно удался… Сначала мы хотели использовать TListView или TListBox, но у меня весьма притязательное отношение к интерфейсам, которые я делаю. Я создал свой собственный! Я использовал TVertScrollBox для размещения объектов, а каждый элемент представляет собой объект класса, который я унаследовал от TObject. Далее я «вручную» задаю позицию каждого элемента в списке. Элементы отрисовываю я, переопределив процедуру Paint, где я рисую объект Icon по типу «Camera», «Alarm» или «Server») и «звёздочку Favorite». Для текста и изначально использовал процедуру выведения текста на «канву», но она работала медленно (это ощущалось при «скроллинге»), поэтому заменил её на TLabel, так что у меня 2 компонента TLabel на элементе.

Изначально на видео был показан старый интерфейс, уже потом я изменил его на более красивую версию. Я сделал такую вот «затейливую» заливочку, которую можно увидеть на скрин-шотах. Каждый элементик полупрозрачен, они раскрашены «зеброчкой», а если их начать двигать руками, то они будут очень красиво перекрываться!
Как вы догадались, красивые интерфейсы для меня – всё. Но это очень легко в «Платформе FM». Я использую картиночки с прозрачностью в формате PNG, чтобы получить тот интерфейс, который мне нужен. Теперь для меня вообще нет проблем.

image

Какие были основные трудности в использовании «Платформы FM» (бывшая FireMonkey)?

Сначала всё показалось совсем новым, но мы достаточно быстро привыкли к новым свойствам и том, как платформа работает. Конечно, я откопал и запостил несколько ошибок. Также некоторые эффекты, такие как «тень», почему-то не заработали на Samsung S4 (тоже запостил), но просто отключил эффекты типа «тень» и заменил их на уже которые PNG-картинки с тенями, что также сделало мое приложение более производительным.

Основной сложностью стал для меня механизм ARC. Вроде как он должен упростить жизнь разработчикам, но временами он мою жизнь как раз усложнял… Всё-таки я привык сам управлять временем жизни своих объектов…

Какая часть Delphi XE5 требует усиленного внимания со стороны Embarcadero?

Я бы не отказался увидеть дальнейшие улучшения в «Платформе FM». Мы очень успешно реализовали наши мобильные приложения, но кое-где нам пришлось решать проблемы «заплатками». Также хочу, чтобы «мобильный» компилятор работал также быстро, что и «классический» под Win32.

Как вы решаете проблему размера приложения?

Да я как-то не особо озадачен размером приложения… Для Android размер где-то 7 MB. Для iOS – 20 MB… Не думаю, что это – как-то конфликтует с понятием «полномсаштабное готовое приложение». Замечено, что размер файла сильно не увеличивается при добавлении новых возможностей… Я так полагаю, это из-за того, что «Платформа FM» и RTL вкомпилируются в приложения? Так?

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

image

Есть ли проблемы с производительностью по сравнению с приложениями, созданными в специализированных одно-платоформенных средах (Xcode, Java)?

Скажу честно, на современных и быстрых телефонах, таких как iPhone 4S, iPhone 5, Samsung S2, S3, S4… всё «летает». Для топовых моделей и последнего поколения устройств все отлично. Но для более «древних» я менее оптимистичен.

Конечно, работают приложения медленнее по сравнению со специализированными одно-платформенными средствами (Xcoide для iOS и Java для Android), но мы сумели обеспечить такую производительность, что пользователь не может отличить, в какой среде сделано приложение. По крайней мере, что касается «Мобильного клиента» и «Мобильной камеры» — пользователи никогда не жаловались на производительность. Но если ещё немного подработать «Платформу FM», то она уже гарантировано будет неотличима от специальных одноплатформенных средств.

Что Вы могли бы посоветовать в плане улучшения Delphi/C++Builder?

Мне нравится, куда развивается Delphi… Разработка под iOS и Android на основе единого кода – это было моей мечтой долгие годы. Теперь у меня есть такие возможности, и я очень рад, что выбрал именно Delphi много лет назад.

Теперь мне бы хотелось видеть постоянные улучшения «Платформы FM» именно как платформы в виде регулярных обновлений. И, как я уже сказал, хочется иметь более быстрый мобильный компилятор.

Покажите, пожалуйста, что-нибудь ещё. Желатльно скрин-шотами. Лучше один раз увидеть.

Вообще без проблем.

Вот это – так называемая «виртуальная матрица» как функция. Пользователь делает «long press», и на экране появляется список мониторов (да-да, эти самые черные прямоугольники) в анимированном режиме (конечно, это «шоу» нужно видеть в динамике, особенно в момент прокрутки). А потом можно буквальном пальцем «распасовать» изображение на конкретный выбранный монитор!

image

Если подключена PTZ-камера, то можно ей управлять из мобильного приложения.

image

Можно использовать элемент управления «типа джойстик».

image

Так выглядит экран при демонстрации изображений с трёх камер одновременно.

image

Как всегда, в завершении — экран настроек.

image

Спасибо, Эрик! Ты очень нас всех порадовал своими демо и скрин-шотами, равно самим фактом того, что вы сделали такие красивые и функциональные приложения. Думаю, Ваш пример вдохновит всех Delphi-разработчиков хотя бы попробовать мобильную разработку. Но в любому случает, теперь нам есть, на кого ориентироваться. Удачи!

image
Tags:
Hubs:
+14
Comments 14
Comments Comments 14

Articles

Information

Website
www.embarcadero.com
Registered
Employees
Unknown
Location
США