Додаток Другий екран для Андроїд: як увімкнути та вимкнути багатовіконний режим. Багатовіконний режим: додаткова конкурентна перевага для Android-додатків

Кожен, хто працював у багатовіконному режимі на Android-пристрої може підтвердити, що в певних ситуаціях це дуже зручно. Простий приклад: читання електронної книгиз електронним словником. Особливо – на смартфоні або планшеті з чималим екраном.
Якщо користувачеві доведеться вибирати між двома додатками, схожими практично у всьому, але різними підтримкою одночасної роботи з кількома вікнами, не дивно, що вибере він те, що таку підтримку забезпечує.

Зі статті ви дізнаєтеся про багатовіконний режим в Android, і про те, як використовувати цю можливість при побудові власних програм.

Огляд

Одночасна робота з кількома вікнами в Android – це цікава функція, яка здатна виділити ваш додаток з багатьох інших, дати йому додаткову конкурентну перевагу. Багато OEM і ODM-виробників, таких як Samsung, Ramos і Huawei, піддають базову систему Android доопрацюванню. Зокрема, вони запроваджують підтримку багатовіконного режиму. Роблять вони це для того, щоб підвищити привабливість своїх смартфонів і планшетів, виділити їх з більшості пристроїв, які подібну функцію не підтримують.


Сценарії використання багатовіконного режиму

Попередні відомості

У червні 2012 року був представлений Cornerstone– перша платформа з відкритим кодом для організації багатозадачної роботи на Android. У серпні 2012-го Samsung випустила перший апарат, який підтримує роботу у багатовіконному режимі. Починаючи з 2013-го року і до наших днів, можна спостерігати вибухове зростання рішень для підтримки одночасної роботи з кількома вікнами в Android.

У травні 2015 року вийшла Android M Developer Preview (сьогодні, в липні, доступна вже Preview 2). Офіційний реліз Android M (6.0) очікується восени 2015 року. Крім інших новацій Android M Preview 2 примітний тим, що підтримує багатовіконний режим.


Розвиток рішень для підтримки багатозадачності в Android

Існують два підходи до роботи з кількома вікнами: це використання плаваючих (floating) та закріплених (docked) вікон. Серед основних можливостей роботи у багатовіконних режимах можна відзначити відкриття та закриття вікон (open/close), зміна їх розміру (resize) та взаємного розташування (swap). Відкриваючи або закриваючи вікно, ми, відповідно, вмикаємо або вимикаємо багатовіконний режим. Функція зміни розміру передбачає налаштування розмірів вікон. Зміна розташування вікон - це дія, яка дозволяє поміняти їх місцями.


Режими роботи з кількома вікнами

У 2013 році на ринку з'явилося безліч рішень, розрахованих на роботу з кількома вікнами. Вони були розроблені OEM та ODM-виробниками, незалежними постачальниками ПЗ та спільнотою розробників програм з відкритим вихідним кодом. У таблиці нижче можна знайти порівняння різних технологій організації багатовіконної роботи в середовищі Android.

Продукт Cornerstone Standout Xposed Ці
Опис
Фреймворк для організації багатозадачної роботи в ОС Android
Бібліотека з відкритим вихідним кодом, яку можна використовувати для створення програм з плаваючими вікнами
Багатовіконний додаток, який підтримує закріплені вікна
Проект спрямований на створення робочого середовища, що нагадує роботу на настільному ПК
Підтримка відкриття, закриття вікон, зміни розміру, розкриття на весь екран
Так
Так
Так
Так
Стиль вікна
Закріплене
Плаваюче
Закріплене
Закріплене та плаваюче
Модифікація коду
На рівні платформи Android
На рівні програми
На рівні платформи Android
На рівні платформи Android
Підтримка програм
Підтримуються всі програми, однак, не доступна динамічне налаштування SurfaceView.
Деякі допоміжні програми. Наприклад – калькулятор.
Сумісність і стабільність рішення потребує поліпшення.
Підтримує всі програми.
Версія Android
Android 4.1. - Android 4.4.
Android 4.1. - Android 4.4.
Android 4.4.
Android 4.4
Офіційний сайт
Клік
Клік
Клік
Клік

Програмна архітектура

Код платформи Android можна модифікувати для того, щоб оснастити її підтримкою додаткових можливостей. Архітектура ОС Android складається з кількох рівнів.

У випадку з Android 4.2 та Android 4.3., оболонка (launcher) та інші програми при запуску розміщуються в одному стеку, що називається «головний стек» («main stack»). Як відомо, багатовіконний режим вимагає більшої кількості стеків для розміщення кількох вікон. У результаті необхідно модифікувати системний клас ActivityManagerService, додавши до нього інтерфейс для створення стека та управління ним. Для модифікації класу платформи WIndowManagerService, який дозволяє керувати графічними уявленнями додатків, потрібно змінити InputManager. Потрібно це для того, щоб він міг перенаправляти події торкання відповідних вікон.

З виходом Android 4.4 та Android 5.0 підхід до керування стеком значно змінився. Оболонка та інші програми можуть запускатися у різних стеках. У систему було додано підтримку кількох стеків і можливість управління ними. На малюнку нижче показані відмінності у роботі зі стеком у різних версіях Android.


Порівняння роботи зі стеком в Android 4.3 та Android 4.4

Тепер зосередимося на Android 5 (Lollipop). ОС Android використовує механізми зворотного дзвінка для виконання інтерфейсних функцій Activity. Однак функція, що управляє, реалізована на рівні платформи. Тому зараз ми розглянемо два важливі класи: ActivityManagerService та WindowManagerService.


Структура платформи Lollipop

Управління Activity у Lollipop

Так як можливість роботи в багатовіконному режимі залежить від стека, нижче показано, як створити стек і як можна запустити Activity в цьому стеку. У Lollipop до інтерфейсу IactivityManager.java додані такі функції:

Після запуску процес SystemServer викликає служби керування Activity (activity manager services) та вікнами (windows management services). Щоб поспостерігати за цим процесом, ми можемо додати у відповідні місця команди виклику виключення часу виконання (RuntimeException).


Процес створення стека в Lollipop

Тепер подивимося, як запустити Activity у стеку:


Запуск Activity у стеку

У Lollipop в утиліту ADB (Android Debug Bridge, налагоджувальний міст Android) були додані наступні команди:

Управління вікнами в Lollipop

WindowManagerService – це центральна частина системи керування вікнами. Його функціональність включає диспетчеризацію подій введення, управління розташуванням об'єктів на екрані і поверхнями, на яких виводяться графічні елементи.


Роль WindowsManagerService вграфічній архітектурі Android

Проблеми багатовіконного режиму

Під час роботи у багатовіконному режимі доступна зміна розмірів вікон. Відомі приклади, коли розмір вікна, що виводить ігрову анімацію, не може бути змінено. Основна причина цього полягає в тому, що підсистема Android SurfaceFlinger не може динамічно змінювати розмір зображення.


Ігри, що використовують SurfaceFlinger, не можуть динамічно змінювати розмір вікна

Ще одна проблема полягає в тому, що деякі програми у багатовіконному режимі відображаються некоректно. На малюнку нижче можна побачити, що калькулятор у багатовіконному режимі відображається неправильно. Вся справа в макеті програми, яка не розрахована на подібні умови використання.


Калькулятор з макетом, не розрахованим на роботу у багатовіконному режимі

Підтримка багатовіконного режиму в Android M

Android M Developer Preview 2 можна запустити на Nexus 5, 6, 9 та Nexus Player. Якщо ж такого пристрою у вас немає, або ви не хочете встановлювати на нього ОС, що знаходиться в статусі Preview, з Android M можна познайомитися за допомогою емулятора Android Studio. Зокрема, зараз нас цікавлять стандартні засобидля роботи у багатовіконному режимі.

Щоб побачити цей режим у дії, достатньо створити новий віртуальний пристрій за допомогою засобу AVD Manager, вибравши при цьому як системний образ один з доступних з API Level MNC. У нашому випадку це був образ x86_64. Далі, треба запустити емулятор, перейти до розділу налаштувань Для розробника та включити там опцію Багатовіконний режим. Якщо такої опції знайти не вдається, погляньте на це посібник

Тепер найцікавіше. Для початку можна запустити кілька додатків, все буде як завжди. А ось якщо натиснути на кнопку виклику списку нещодавно відкритих додатківв заголовках мініатюр вікон з'явиться новий значок. За замовчуванням це рамка, яка вказує на те, що програма запускається в повноекранному режимі. Якщо натиснути цю піктограму, з'явиться меню вибору макету розташування вікон.


Меню вибору макету розташування вікон у багатовіконному режимі


Багатовіконний режим в Android M

Чи буде доступна робота з кількома вікнами в офіційному релізі Android M поки невідомо. Однак, наприклад, системний калькулятор у цьому режимі почувається добре. У результаті, ми маємо серйозні підстави вважати, що не за горами той день, коли адаптація додатків для багатовіконного режиму з конкурентної переваги перетвориться на нагальну необхідність.

Якщо ж ви хочете оснастити свої програми, розраховані на більш ранні версії Android, підтримкою кількох вікон, саме час звернутися до рішень сторонніх розробників, Про які йшлося вище. Наприклад, до Cornerstone.

Приклад: Cornerstone

Компанія Onskreen створила Cornerstone - перший фреймворк, що дозволяє працювати з кількома вікнами на Android. Він розрахований на пристрої з великими екранами та планшети. Вихідний код можна завантажити на Github. Він підтримує роботу з Android версій 4.1 та 4.2. Для пізніших версій цієї ОС Cornerstone поки що не випущено. Проте можна проаналізувати вихідний коддля Android 4.2 для того, щоб дізнатися про технічні подробиці роботи системи.


Модифікації Cornerstone в Android Jelly Bean

Підсумки

В багатьох мобільних пристроях, що працюють під управлінням Android OS, використовуються процесори Intel®. Як розробники можуть покращити відчуття користувачів від роботи з їхніми програмами? Як зробити програми більш конкурентоспроможними? Ці питання ведуть нас до постійного вдосконалення продуктів на пристроях з архітектурою Intel Architecture (IA). Підтримка роботи у багатовіконному режимі – це гарний приклад корисної можливості, що дає додаткам конкурентні переваги. Це зручно, багатовіконний режим дозволяє користувачеві виконувати кілька завдань одночасно. Наприклад – дивитися відео та писати друзям відгук про те, що дивиться. Наприклад – грати в гру та читати її огляди. Сьогодні роботу у багатовіконному режимі підтримують кілька пристроїв. Наприклад – це планшети Ramos i12, Teclast x98 та Cube i7, який працює під керуванням Remix OS.


Багатовіконний режим на IA-пристроях

В Android 6.0 схована експериментальна опція, що дозволяє використовувати режим багатовіконності. Активувати її відносно складно, але якщо зробити все правильно, жодних труднощів із цим не повинно виникнути. На відміну від аналогічної функції на смартфонах Samsungвона працює з усіма додатками.

Для того, щоб на Android 6.0 з'явилася опція багатовіконності, потрібно лише відредагувати файл build.prop, вказавши в ньому, що ви користуєтеся збиранням userdebug, а не user. Це можна зробити за допомогою комп'ютера та кастомного рекавері, а якщо на пристрої отримано root-доступ – звичайним текстовим редактором.

Перший спосіб

1. Встановіть кастомне рекавері (наприклад, TWRP) на пристрій. Для цього скачайте та встановіть ADB з Android SDK. Потім скачайте образ рекавері для свого пристрою, перейменуйте його на twrp.img і помістіть папку ADB.

2. Підключіть смартфон до комп'ютера USB-кабелем, відкрийте командний рядок та виконайте три команди:

Adb reboot bootloader
fastboot flash recovery twrp.img
fastboot reboot

3. Вимкніть смартфон і зайдіть у рекавері натисканням певного поєднання клавіш (як правило, кнопка живлення та кнопки додавання та зменшення гучності).

4. У рекавері виберіть розділ Mounts та поставте хрестик навпроти System.

5. Підключіть смартфон до комп'ютера кабелем і на комп'ютері командному рядкузадайте наступну команду:

Adb pull /system/build.prop

6. На комп'ютер завантажується файл build.prop. Відкрийте його в блокноті та замініть рядок "ro.build.type=user" на "ro.build.type=userdebug"



7. Завантажте файл build.prop назад на смартфон, задавши командному рядку:

Adb push build.prop /system/

8. Встановіть ще три команди, які потрібні для того, щоб сторонні програмине могли модифікувати build.prop:

Adb shell
cd system
chmod 644 build.prop

9. Перезавантажте смартфон та активуйте багатовіконність у налаштуваннях для розробників.

Другий спосіб

На смартфонах із root-доступом відредагувати файл build.prop набагато простіше. Це можна зробити спеціальним додатком Build Prop Editor або за допомогою текстового редактора, вбудованого в файловий менеджерначебто Root Explorerабо X-Plore. Файл розташований за адресою /system/build.prop, і в ньому потрібно замінити рядок "ro.build.type=user" на "ro.build.type=userdebug".

Як активувати багатовіконність?

1. Відкрийте системні налаштування, перейдіть до розділу «Про пристрій» і кілька разів натисніть на номер складання Android.

2. У налаштуваннях з'явиться розділ для розробників. Зайдіть у нього – ви побачите перемикач, що дозволяє активувати багатовіконність.

3. Відкрийте екран багатозадачності довгим натисканням на кнопку домашньої сторінки(або віртуальну кнопку). Ви побачите новий значок на мініатюрах сторінок програм. Після натискання на нього система запропонує вибрати розташування програми: на половині, однієї четвертої екрана або по всьому екрані. Коли відкрито кілька додатків, пропорції вікон можна змінювати.

Швидше за все, в майбутньому Google відкриє доступ до цієї функції Androidвсім користувачам. Як гадаєте, вона потрібна смартфонам та планшетам чи абсолютно марна?

У нової версіїопераційної системи Googleреалізувала дуже необхідну функцію- багатовіконність в Android Nougat. Ця функція дозволяє запускати будь-які програми у вікнах, а не як Samsung і LG, які дозволяють використовувати багатовіконність тільки для деяких програм. Це означає, що нова функціяпрацює практично для всіх програм, весь час.

Проте є свої обмеження. По-перше, функція, ймовірно, не буде працювати зі застарілими програмами, які не були оновлені свого часу. По-друге, Ви не можете запустити також програму в новому вікні. На щастя, є рішення для останнього: програма під назвою Parallel Windows forНоуґат.

Перш ніж ми розповімо про те, як використовувати Parallel Windows, варто зазначити, що ця програма знаходиться в Альфа-стадії розробки і є експериментальною, тому можуть виникнути деякі помилки. Майте це на увазі при тестуванні програми! Крім того, само собою зрозуміло (але я все одно скажу це): необхідно мати Nougat, щоб використовувати цю програму.

Отже, тепер можна розповісти, як запустити багатовіконність в Android Nougat. По-перше, встановіть Parallel Windows (це безкоштовно). Після встановлення, запустіть програму.

Як встановити Parallel Windows

Після запуску програма буде показано попередження про те, що програма є експериментальною. Натисніть на полі "I have read and understood", потім натисніть "Continue".

На наступному екрані необхідно дати дві дозволи, щоб скористатися всіма функціями Parallel Windows. Натисніть перший перемикач «Permit to draw over Apps», Ви потрапите в меню дозволу, де його включити. Як тільки увімкніть роздільну здатність, поверніться назад до програми Parallel Windows.

Далі в головному меню натисніть перемикач Enable Accessibility Service. Ви потрапите в меню спеціальних можливостей, де потрібно буде увімкнути Parallel Windows for Nougat. З'явиться спливаюче вікно, в якому буде сказано до чого програма матиме доступ, натисніть «OK». Знову ж таки, просто натисніть кнопку назад, щоб повернутися до основної програми.

Нарешті Вам необхідно поставити «Hotspot Dimensions». Це місце де відображатиметься меню Parallel Windows. За умовчанням, він встановлений у середині правої частини екрана, який є чудовим місцем для цього. Я використовуватиму цей параметр протягом усього уроку.

На цьому параметр Parallel Windows завершено. Тепер можна використовувати багатовіконність в Android Nougat.

Як використовувати Parallel Windows

Для початку, проведіть до середини від правої частини екрану - на місці, про яке ми говорили раніше при налаштуванні «Hotspot Dimensions». Відкриється меню Parallel Windows.

Тут є три варіанти, зверху вниз: відкрити меню програм, запустити мультиоконную сесію та дзеркало програми.

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

Друга іконка запускає програму в багатовіконному режимі. Відкриється список нещодавно відкритих процесів і необхідно вибрати додаток, що цікавить Вас, в нижній частині вікна.

Другий варіант можна використовувати без використання Parallel Windows. Третя опція є найпотужнішою, вона дозволяє використовувати дзеркало програми у мультиоконному режимі. Проте вона може здатися заплутаною.

Щоб використовувати цю функцію, Ви повинні спочатку запустити як мінімум одну програму у віконному режимі. Відкрийте меню Parallel Windows та виберіть опцію. З'явиться спливаюче повідомлення, яке скаже Вам, що необхідно вибрати програму, щоб отримати дзеркало.

Як ми вже знаємо, версія Android Nougat має безліч функцій, здатних зробити роботу користувача максимально гладкою. Основні моменти новітнього оновлення Android включають покращену панель повідомлень, оптимізацію механізму передачі даних і енергозбереження, а також підтримку пристроїв віртуальної реальності. Одним із найважливіших аспектів нововведень, що завоювало чимало фанатів (включаючи і нас), є набір опцій керування завданнями. Завдяки останньому оновленню Android 7.0 Nougat, тепер можна використовувати дві програми одночасно в мультиоконном режимі.

Примітка

Ми хочемо вам повідомити, що не всі програми однакові за своєю суттю,
і з цієї причини ви виявите, що не всі з них сумісні з мультивіконним режимом. Однак вам не слід хвилюватися – це не ваша вина, а вина розробників, тому що їм знадобиться ще якийсь час, щоб створити чергове оновлення, перш ніж інші програми зможуть працювати у вказаному вище режимі. На сьогоднішній день є спосіб, як оминути таку проблему. Ви можете запустити будь-яку програму в мультиоконному режимі з-під «Кошти розробника» в останньої версіїмобільною операційної системивід Google.

Запуск будь-якої програми в мультиоконном режимі на Android Nougat

Для початку вам необхідно активувати пункт "Кошти розробника" на вашому телефоні. Для цього пройдіть за схемою «Установки > Інструменти розробника > Про пристрій». Далі натисніть кілька разів на номер складання, доки не побачите повідомлення про те, що ви стали розробником.

Тепер знову поверніться в меню налаштувань і відкрийте «Кошти розробника». Зробіть прокручування сторінки до самого низу та увімкніть опцію «Примусова зміна розмірів операцій». Коли ви зробите це, вам потрібно буде перезавантажити ваш девайс, щоб активувати цю опцію. Після цього навіть ті програми, які були сумісні з оновленням для Nougat, зможуть працювати в мультиоконном режимі.

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

На вашу думку, мультивіконний режим буде корисним для ваших багатозадачних потреб? Чи ви дотримуватиметеся більш традиційного однозадачного підходу на даний момент? Поділіться з нами вашими міркуваннями у коментарях.