Почему устройства 2 в 1?
Устройство 2 в 1— это компьютер, который может быть как ноутбуком, так и планшетом. В режиме ноутбука (настольном режиме) основными устройствами ввода являются клавиатура и мышь. В режиме планшета для ввода используется сенсорный экран, то есть применяется касание пальцами или пером. Устройство 2 в 1, как и ультрабук Intel®, обеспечивает точность и управляемость при использовании любых методов ввода: можно печатать на клавиатуре при работе, или управлять касаниями в играх.
Разработчикам приходится рассматривать разные сценарии в своих приложениях, чтобы использовать преимущества нового типа устройств. У некоторых приложений в обоих режимах можно сохранить одинаковое меню и внешний вид. В других программах, таких как Krita Gemini для Windows* 8, функции и элементы интерфейса в разных режимах будут различаться. Krita — это программа для создания набросков и рисования. Это полнофункциональное решение для создания цифровых изображений с нуля. В этой статье описывается, как разработчики Krita реализовали определение режима устройства 2 в 1, включая автоматическое переключение режима и переключение режима пользователем. Кроме того, рассматриваются определенные области, о которых разработчикам следует позаботиться при реализации приложений 2 в 1.
Введение
В ходе многолетнего развития компьютерной техники применялись самые разные методы ввода, от перфокарт и командной строки до указателей, таких как мышь. С появлением сенсорных экранов для выбора объектов на экране можно использовать не только мышь, но также пальцы и перо. В большинстве случаев далеко не все задачи удобно выполнять с сенсорным управлением, но в приложениях с возможность выбора метода ввода, таких как Krita Gemini, в этом и нет нужды. Устройства 2 в 1 позволяют выбрать наиболее удобный режим пользовательского интерфейса на одном устройстве.
Устройство 2 в 1 может переводиться из режима ноутбука в режим планшета и обратно разными способами (Рис. 1 и Рис. 2). Множество примеров доступно на сайте Intel. Устройство можно перевести в режим планшета из режима ноутбука, отсоединив экран от клавиатуры либо отключив клавиатуру и сделав экран основным устройством ввода (например, сложив экран поверх клавиатуры). Производители компьютеров предоставляют информацию о смене режима работы оборудования операционной системе. Событие API Windows* 8 WM_SETTINGCHANGE и текстовый параметр ConvertibleSlateModeсигнализируют об автоматическом переключении в режим планшета и обратно в режим ноутбука. Кроме того, разработчикам рекомендуется для удобства пользователей добавить и кнопку, чтобы можно было переключать режимы вручную.
Устройства 2 в 1 могут переключаться между режимами планшета и ноутбука разными способами; аналогично можно создать и программу таким образом, чтобы она разными способами реагировала на переключение режимов. В некоторых случаях в режиме планшета следует сохранить пользовательский интерфейс как можно более близким к режиму ноутбука; в других случаях можно внести довольно существенные изменения. Корпорация Intel сотрудничает со многими поставщиками, чтобы помочь им реализовать разные режимы работы трансформеров в своих приложениях. Специалисты Intel помогли разработчикам KO GmBH объединить функциональность приложения Krita Touch с популярным приложением для рисования с открытым исходным кодом Krita (для ноутбука) в новом приложении Krita Gemini. Над проектом Krita работает активное сообщество разработчиков, приветствующее новые идеи и предоставляющее высококачественную поддержку. Команда добавила механизмы для гладкого преобразования из режима ноутбука (мышь и клавиатура) в сенсорный интерфейс в режиме планшета. См. преобразование пользовательского интерфейса Krita Gemini в кратком видеоролике на Рис. 3.
Рисунок 3. Видео Преобразование пользовательского интерфейса Krita Gemini UI,щелкните значок для запуска
Intel сотрудничает со множеством производителей ПК, чтобы развивать направление 2 в 1. Intel Developer Zone предоставляет различные ресурсы, чтобы помочь разработчикам в создании приложений. Смотрите раздел Дополнительные ресурсы в конце статьи.
Создание в режиме планшета, улучшение в режиме ноутбука
Разработчики Gemini постарались максимально использовать все возможности интерфейса в обоих режимах работы. На Рис. 4 и Рис. 5 видно, что пользовательский интерфейс в двух режимах отличается очень сильно. Это дает пользователю возможность плавно перейти от рисования «в поле» в режиме планшета к ретушированию и проработке более тонких деталей в режиме ноутбука.
Рисунок 4: Пользовательский интерфейс Krita Gemini в режиме планшета
Рисунок 5: Пользовательский интерфейс Krita Gemini в режиме ноутбука
Существует три основных этапа для реализации в приложении поддержки переключения между двумя режимами работы.
Этап 1 — Поддержка сенсорного управления.Нам повезло: поддержка сенсорного вводаполучила широкое распространение до появления устройств 2 в 1. Обычно для реализации этого механизма требуется значительно больше усилий, чем для переключения между режимами планшета и ноутбука. Корпорация Intel опубликовала статьи о добавлении поддержки сенсорного интерфейса в приложениях для Windows 8.
Этап 2 — Поддержка переключения режимов. В первой части видеоролика (Рис. 3) показана автоматическая смена режима на основе срабатывания датчика; в данном случае это поворот (Рис. 6). После этого показана смена режима при нажатии пользователем соответствующей кнопки в приложении (Рис. 7).
Рисунок 6:Переключение приложения по срабатыванию датчика при смене режима
Рисунок 7:Кнопка переключения Switch to Sketch — переключение в режим планшета запускается пользователем
Для автоматического переключения требуется определить состояние датчика, отслеживать его и выполнять соответствующие действия при известном состоянии. Кроме того, для удобства пользователей следует добавить и возможность переключать режимы работы приложения вручную. Пример добавления смены режима на основе датчика можно найти в статье Intel «How to Write a 2 in 1 Aware Application». Код приложения Krita для управления переключениями между режимами можно найти в исходном коде этого приложения, выполнив поиск по слову SlateMode. Программа Krita распространяется на условиях лицензии GNU Public License. Для получения последней информации см. репозиторий исходного кода.
// Snip from Gemini - Define 2-in1 mode hardware states:
#ifdef Q_OS_WIN
#include <shellapi.h>
#define SM_CONVERTIBLESLATEMODE 0x2003
#define SM_SYSTEMDOCKED 0x2004
#endif
Не все компьютеры с сенсорным управлением поддерживают автоматическое переключение, поэтому мы рекомендуем поступить так, как сделали разработчики Krita Gemini, и добавить в приложение кнопку, с помощью которой пользователи могли бы вручную переключать режимы работы приложения. Кнопка Gemini показана на Рис. 7. Смена пользовательского интерфейса по нажатию кнопки происходит так же, как при срабатывании механического датчика. Информация на экране и устройство ввода по умолчанию изменятся с сенсорного экрана и крупных значков в режиме планшета на клавиатуру, мышь и мелкие значки в режиме ноутбука. Тем не менее, поскольку датчик не срабатывал, метод, использующий кнопку, должен сменять параметры экрана, значков и устройства ввода по умолчанию без получения данных о состоянии датчика. Поэтому разработчики должны предоставить пользователю возможность переключения между режимами мышью или касанием вне зависимости от состояния кнопки, если пользователь вдруг выберет не тот режим, который ему нужен.
Определение кнопки Kaction(), ее состояния и действия показаны в коде ниже:
Затем разработчики занялись обработкой событий, переключаемых кнопкой. Сначала нужно проверить последнее известное состояние системы, затем идет смена режима: Этап 3 — Тестирование и отладка.Использование палитры при сенсорном управлении или при управлении мышью очень просто, но сама рабочая область должна сохранять фокус и масштабирование согласно ожиданиям пользователей. Поэтому увеличение размера всех объектов было невозможно. Для сенсорного взаимодействия в режиме планшета можно увеличить элементы управления, но самим изображением на экране нужно управлять на другом уровне, чтобы сохранить ожидаемое удобство работы. Обратите внимание на видео (Рис. 3), что изображение в области редактирования сохраняет неизменный размер на экране в обоих режимах. В этой области разработчикам пришлось потрудиться, чтобы сохранить одинаковую площадь пространства экрана. Еще одна проблема состояла в том, что оба пользовательских интерфейса работали одновременно: это сильно влияло на производительность, поскольку оба интерфейса совместно использовали одни и те же графические ресурсы. Оба интерфейса были доработаны таким образом, чтобы использовать разные ресурсы, а приоритет в системе отдавался бы активному интерфейсу. Как видно, добавление поддержки переключения режимов 2 в 1 в приложении — достаточно простой процесс. Нужно тщательно изучить, как пользователи будут взаимодействовать с вашим приложением в каждом из режимов. Прочтите статью Intel «Write Transformational Applications for 2 in 1 Devices Based on Ultrabook™ Designs» для получения дополнительной информации о создании приложений с изменяющимся пользовательским интерфейсом. Для Krita Gemini было принято решение реализовать простые возможности рисования в режиме планшета, а ретушировать и прорабатывать детали рисунков в режиме ноутбука. Что вы можете выделить в вашем приложении, предлагая его пользователям в режиме планшета по сравнению с режимом ноутбука? Дополнительная информация Другие статьи Intel Ultrabook Device and Tablet Windows Touch Developer Guide Дополнительные ресурсы Intel Intel® Developer Zone Об авторе Тим Дункан — инженер Intel. Друзья называют его Мистер Гаджет. В настоящее время он помогает разработчикам встраивать новые технологии в создаваемые решения. Тим обладает многолетним опытом работы в отрасли, сфера его профессиональных интересов весьма обширна — от производства микросхем до интеграции систем. Найдите его на сайте Intel® Developer Zone: Tim Duncan (Intel). Intel и эмблема Intel являются товарными знаками корпорации Intel в США и в других странах.// Snip from Gemini - Define 2-in1 Mode Transition Button:
toDesktop = new KAction(q);
toDesktop->setEnabled(false);
toDesktop->setText(tr("Switch to Desktop"));
SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), q, SLOT(switchDesktopForced()));
connect(toDesktop,
SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), q, SLOT(switchToDesktop()));
sketchView->engine()->rootContext()->setContextProperty("switchToDesktop
sketchView->Action", toDesktop);
// Snip from Gemini - Perform 2-in1 Mode Transition via Button:
#ifdef Q_OS_WIN
bool MainWindow::winEvent( MSG * message, long * result ) {
if (message && message->message == WM_SETTINGCHANGE && message->lParam)
{
if (wcscmp(TEXT("ConvertibleSlateMode"), (TCHAR *) message->lParam) == 0)
d->notifySlateModeChange();
else if (wcscmp(TEXT("SystemDockMode"), (TCHAR *)
message->lParam) == 0)
d->notifyDockingModeChange();
*result = 0;
return true;
}
return false;
}
#endif
void MainWindow::Private::notifySlateModeChange()
{
#ifdef Q_OS_WIN
bool bSlateMode = (GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0);
if (slateMode != bSlateMode)
{
slateMode = bSlateMode;
emit q->slateModeChanged();
if (forceSketch || (slateMode && !forceDesktop))
{
if (!toSketch || (toSketch && toSketch->isEnabled()))
q->switchToSketch();
}
else
{
q->switchToDesktop();
}
//qDebug() << "Slate mode is now"<< slateMode;
}
#endif
}
void MainWindow::Private::notifyDockingModeChange()
{
#ifdef Q_OS_WIN
bool bDocked = (GetSystemMetrics(SM_SYSTEMDOCKED) != 0);
if (docked != bDocked)
{
docked = bDocked;
//qDebug() << "Docking mode is now"<< docked;
}
#endif
}
Заключение
All-in-One PC: What are the Developer Possibilities?
Windows 8* Store vs Desktop App Development
Intel® Graphics Performance Analyzers
Developing Power-Efficient Apps for Ultrabook™ Devices
Ultrabook™ App Lab
Windows* 8.1 Preview – What’s New for Developers
Ultrabook™ and Tablet Windows* 8 Sensors Development Guide
© Intel Corporation, 2013—2014. Все права защищены.
*Прочие наименования и товарные знаки могут быть собственностью третьих лиц.