DOU Labs: як в GlobalLogic спроектували розумний Android для розумної дошки

В рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Які перші асоціації викликає Android? Звісно ж, це смартфони та планшети! А розробка під Android — це створення різноманітних мобільних програм. Однак насправді сфера застосування Android набагато ширша. Android все частіше використовуються в embedded-рішеннях, наприклад, в інформаційно-розважальних системах для дому та автомобілів, медичних пристроях, рішеннях для роздрібної торгівлі, військовому обладнанні та багатьох інших сферах. Звісно, в embedded-світі Android значно поступається головному фавориту — Linux, однак частка мобільної операційної системи на «не мобільних» пристроях поступово росте (наразі це близько 20%).

Попри свою популярність розробка під embedded Android залишається нетривіальною задачею, справжнім експериментом, в ході якого розробники-першопрохідці набивають чимало власних ґуль, аби допиляти Android для роботи на інколи зовсім екзотичних пристроях. Одними з таких пристроїв є smart boards — презентаційні дошки, на які можна виводити будь-яке зображення, а також писати на них за допомогою стилуса.

Наш замовник — компанія SMART Technologies — вже добре відома в Україні, адже її розумні дошки використовуються у багатьох вітчизняних школах. Серед клієнтів компанії — приватний бізнес, навчальні заклади, державні підприємства та установи. Новий продукт SMART Technologies — саме така розумна дошка з embedded Android на борту.

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

В нутрощах Android

Отже, нашим завданням у проекті було розширити можливості операційної системи Android, аби реалізувати увесь потенціал майбутнього продукту. Наприклад, за замовчуванням в Android не існує можливості «розшарити» екран між кількома пристроями, і нам потрібно було додати в систему таку функціональність.

Розробка здійснювалася на останній на той час версії Android. Також варто зазначити, що на ранньому етапі проекту ніякої дошки ще не існувало. Був лише прототип, і всю розробку доводилося виконувати на емуляторах та віртуальних пристроях.

Робота між командами замовника та GlobalLogic була розподілена наступним чином: вони займалися low-level-розробкою, щоб адаптувати Android під апаратну платформу Qualcomm Snapdragon (по суті, намагалися зробити так, щоб embedded Android запрацював на їхній залізяці), ми ж працювали на рівні Android Hardware Abstraction Layer (HAL) та Android SDK. Організаційно все відбувалося так: замовник приходив до нас з ідеєю, а ми займалися її технічною реалізацією. У більшості випадків замовник повністю довіряє нам придумати та самостійно реалізувати рішення на практиці.

Власний API. Специфіка проекту, на мою думку, полягає у тому, що ми не створювали якісь додаткові програми, а додавали всі необхідні функції безпосередньо до операційної системи. Тобто ми розробляли власний API, розширювали Android SDK, для того щоб рішення відповідало всім вимогам замовника і ми могли реалізувати всю передбачену функціональність.

Наприклад, щоб втілити згадану вище функцію «screen sharing», команда low-level-розробників готувала для нас драйвер для підключення пристроїв через HDMI. Ми ж, отримавши цей інтерфейс на рівні Hardware Abstraction Layer, протягували його до Android SDK та створювали модуль, який може використовувати будь-яка Android-програма, аби отримати доступ до підключеного ноутбука та його екрану. Наразі на дошку можна транслювати екран не тільки лептопа, але й планшета, смартфона і т.п., адже система підтримує такі популярні технології передачі зображення як Miracast, Chromecast та AirPlay.

Chromium. Крім згаданого вище «шерінгу екрану» та підключення сторонніх пристроїв, ми відповідали за заміну стандартного браузера на кастомізований Chromium та його інтеграцію в систему. Тепер на дошці можна відобразити будь-яку веб-сторінку, включаючи YouTube. Також ми додали в Android кастомізовану клавіатуру, що не прив’язана до конкретного місця на екрані. Крім вводу друкованого тексту вона дозволяє робити на екрані написи поверх будь-якого зображення, в тому числі і веб-сторінки. Наприклад, переглядаючи якийсь сайт, ви одразу можете зробити на ньому помітки. Саме ці можливості дошки ми і реалізовували у нашій команді.

Оновлення прошивки. Ще ми придумали класний механізм оновлення прошивки для розумної дошки. Власне винахід інженерів GlobalLogic полягає в тому, щоб зробити процес оновлення зовсім непомітним для користувача, адже все має відбуватися виключно у фоновому режимі. Реалізація ідеї додала нам чимало головного болю, але ми дуже задоволені результатом. Аби зрозуміти його переваги, просто згадайте як відбувається оновлення системи у вашому смартфоні :)

Труднощі та виклики

Найбільшою складністю в процесі розробки була практична відсутність будь-якої документації. У природі просто не існує якоїсь книжки про Android Internal, яку можна почитати та сказати «Ага! Ось цей модуль і цей модуль відповідають саме за це!» Коли виникала необхідність зробити ту чи іншу річ, потрібно було серйозно розбиратися з кодом операційної системи, і це, на мою думку, було найбільшою складністю цього проекту. Тобто нам довелося вивчити велику кількість коду Android — аби зрозуміти, що там відбувається і як воно все функціонує.

Саме тому нам були потрібні люди, що розуміють як саме працюють різні частини операційної системи Android: як функціонує підсистема звуку, відображення «картинки» на екрані або ж launcher. Звичайно, поверхнева інформація щодо роботи «лаунчера» дійсно є, і вона доступна будь-якому програмісту. Але якщо потрібно додати до «лаунчера» нові функції, то все одно доведеться колупати код, щоб дізнатися як різні модулі взаємодіють і як саме наші зміни вплинуть на роботу того чи іншого модуля.

На щастя, з цим завданням ми успішно впоралися. За час розробки ми інтегрували багато важливих функцій та допомогли замовнику створити дуже переконливе демо для міжнародної освітньої виставки BETT, яка щороку наприкінці січня проходить у Великобританії. Можливості нового продукту дуже сподобалися потенційним покупцям та існуючим клієнтам SMART Technologies. І наразі ми втілюємо всю функціональність демо у фінальній версії прошивки.

Перспективи та плани

На сьогоднішній день наша команда налічує 16 осіб. Частина людей займається програмним забезпеченням для самої дошки, частина — створенням супутніх програм (наприклад, редактор матеріалів та презентацій, які створюють вчителі). Частина нашої команди розробляє UI та тестує готовий продукт. Справ дійсно вистачає, адже стабільна версія прошивки має бути готова вже у серпні. У вересні починається навчальний рік, а отже нові дошки SMART мають зустріти учнів та вчителів у шкільних класах.

Цього року SMART Technologies була придбана технологічним гігантом Foxconn (ця компанія відома перш за все тим, що на її заводах виробляється вся продукція Apple). Після зміни власника рішення для освіти стали основним пріоритетом замовника, а значить і нашої команди. Отже багато цікавих проектів для навчання (у тому числі навчання клієнтів нашого замовника і, до речі, нашого власного) ще чекають нас попереду.

Похожие статьи:
DXC Technology, поставщик ИТ и консалтинговых услуг, покупает компанию Luxoft. Ожидается, что сделка будет закрыта к июню 2019 года и её сумма...
В этой статье я хотел поделиться с вами своими личными наблюдениями, опытом и анализом того, почему люди меняют работу в ИT....
В этом году ряд производителей направили свои усилия на впуск планшетов большого размера. Так, Apple анонсировала модель iPad Pro с...
16 січня Верховна Рада ухвалила законопроєкт № 10062, який стосується цифровізації Збройних сил України. Передбачалося,...
До курсу Experiment 1.01 можуть долучитися підприємці з новими ідеями або ті, хто відкрили бізнес після 2022 року. Зокрема...
Яндекс.Метрика