Взаимодействие с пользователем и пользовательский интерфейс

Окна регулируемого размера расширяют возможности пользователей по настройке работы приложения. Новые функции для работы с плиткой приложения. Обновление функций поиска, общего доступа и чудо-кнопок обеспечивает более согласованную среду для пользователей.

Новые и усовершенствованные возможности Windows 8.1

  • Окна регулируемого размера
  • Обновления для плиток
  • Обновления для поиска
  • Обновления для общего доступа
  • Чудо-кнопки работают на любом экране
  • Интеграция с контактами и событиями
  • Синтез речи
  • Обновления в управлении фоновыми задачами
  • Поддержка приложения будильника на экране блокировки
  • Обновления в планировании рабочих элементов

Окна регулируемого размера

[Скачайте примеры представлений приложений, нескольких представлений и диспетчера проекций.]

В Windows 8.1 изменены размеры и положение окон. При разработке приложений для Windows 8.1 необходимо учитывать следующие моменты.

  • В Windows 8.1 нет состояний просмотра с фиксированной шириной. Теперь пользователи могут плавно уменьшать размер окна приложения вплоть до минимальной ширины. (Минимальная ширина по умолчанию составляет 500 пикселей.) Таким образом, у приложений больше нет заполненного и прикрепленного представлений. Вы должны спроектировать приложение так, чтобы оно хорошо выглядело и правильно работало при любом размере вплоть до минимального.

    Примечание  Прикрепленное представление в Windows 8 имеет ширину 320 пикселей. Новая минимальная ширина по умолчанию (500 пикселей) больше, чем прикрепленное представление в Windows 8.

  • Если ваше приложение хорошо работает в меньшем размере и вы хотите, чтобы пользователи оставляли его на экране, вы можете сократить минимальную ширину до 320 пикселей.

  • На экране может быть открыто более двух приложений одновременно, и ваше приложение может размещаться между двумя другими, не касаясь левого или правого края экрана.

  • Одновременно может быть открыто несколько окон одного приложения.

  • Приложение может запустить другое приложение. Затем два приложения обычно делят экран поровну, если места оказывается достаточно. Это можно изменить, чтобы запускаемое приложение было шире или уже, чем исходное, либо заменяло его на экране. Чтобы изменить поведение, заданное по умолчанию, используйте свойство DesiredRemainingView.

Как и в Windows 8, приложения должны заполнять экран по высоте. Минимальная высота приложения составляет 768 пикселей.

Минимальные размеры приложения в пикселях (по умолчанию и в узком режиме)

Руководство по проектированию окон регулируемого размера

Во время проектирования приложения для Windows 8.1 вам необходимо решить следующие задачи.

  • Макет приложения и элементы управления должны поддерживать масштабирование вплоть до минимального размера. В частности продумайте, как размер приложения отражается на следующих элементах управления:

  • Проектируйте приложение так, чтобы оно эффективно использовало пространство на большом экране, а его макет автоматически адаптировался к экрану. Не оставляйте большие пустые пространства.

  • Если вы задали минимальную ширину 320 пикселей, настройте для приложения следующие изменения в узком режиме (с шириной от 320 до 500 пикселей).

Дополнительные примеры макетов доступны для окон с изменяемой шириной до 320 пикселей и окон, высота которых больше, чем ширина. Подробнее об использовании чудо-кнопок для приложения независимо от его размера: Чудо-кнопки работают на любом экране.

Задание минимальной ширины

Чтобы изменить минимальную ширину приложения (по умолчанию она составляет 500 пикселей), укажите атрибут MinWidth элемента ApplicationView в манифесте приложения.

<Application>
   <VisualElements>
      <ApplicationView MinWidth=”width320” />
   </VisualElements>
</Application>

Дополнительные сведения о манифесте приложения см. в разделе Манифест пакета приложения.

Обновления класса ApplicationView

В Windows 8.1 пространство имен Windows.UI.ViewManagement содержит новые перечисления:

Класс ApplicationView содержит новые свойства:

Класс ApplicationView также содержит новые методы:

Следующие элементы в Windows 8.1 считаются устаревшими:

  • Свойство ApplicationView.Value — недопустимо, поскольку приложения больше не имеют состояний просмотра фиксированной ширины. Вместо этого ориентацию окна приложения можно получить в свойстве Orientation, а его положение — в свойствах AdjacentToLeftDisplayEdge, AdjacentToRightDisplayEdge и IsFullScreen.

  • Метод ApplicationView.TryUnsnap — недопустим, поскольку приложения больше не имеют особого прикрепленного состояния, а минимальная ширина по умолчанию составляет 500 пикселей.

  • Перечисление ApplicationViewState — недопустимо, поскольку в приложениях может плавно изменяться размер окна и больше нет состояний просмотра фиксированной ширины.

Обновления для плиток

[Рассмотрите образцы, демонстрирующие применение плиток и индикаторов событий приложений, а также вспомогательных плиток.]

В Windows 8.1 изменены характеристики плиток и возможности работы с ними.

Новые размеры плиток

В Windows 8 плитки имели два размера.

  • Квадратные плитки (150×150 пикселей для коэффициента масштабирования 1x).
  • Широкие плитки (310×150 для коэффициента масштабирования 1x).

В Windows 8.1 появились еще два размера плиток.

  • Маленькие плитки (70×70 для коэффициента масштабирования 1x).
  • Большие плитки (310×310 для коэффициента масштабирования 1x).

Поскольку три из четырех шаблонов теперь имеют квадратную форму, то квадратные плитки Windows 8 (150×150 для коэффициента масштабирования 1x) стали называться средними. Таким образом, плитки могут быть маленькими, средними, широкими и большими. Вот примеры всех четырех размеров.

Пример плиток всех четырех размеров на начальном экране

На месте одной средней плитки пользователь может расположить четыре маленьких. Маленькие плитки не поддерживают уведомления на живой плитке, но поддерживают индикаторы событий. Большая плитка занимает место двух широких и, как и плитки в Windows 8, поддерживает уведомления на живой плитке.

Новые соглашения об именах для шаблонов плитки

Соглашение об именах, действовавшее в Windows 8 для шаблонов плитки, обновлено с учетом добавленных новых размеров. В новом соглашении используются абсолютные размеры в пикселях для коэффициента масштабирования 1×. Четыре размера соответствуют следующим новым названиям (в каждую категорию входит множество шаблонов):

  • маленькая = Square70x70;
  • средняя = Square150x150;
  • широкая = Wide310x150;
  • большая = Square310x310.

Аналогично атрибут SmallLogo в манифесте приложения теперь называется Square30x30Logo.

Все существующие шаблоны плитки переименованы по новым соглашениям.

Старое имя Новое имя Пример
TileSquare* TileSquare150x150* TileSquareImage (старое имя)/TileSquare150x150Image (новое имя)
TileWidexxx TileWide310x150xxx TileWideImageAndText01 (старое имя)/TileWide310x150ImageAndText01 (новое имя)

 

Старые имена тоже поддерживаются для обеспечения совместимости, но в новых проектах следует использовать новые имена.

Изменения в манифесте приложения, связанные с плиткой

Свойства по умолчанию для основной плитки приложения — поддерживаемые размеры, отображаемое имя и цвет плитки — объявляются в манифесте приложения.

Регистрация новых размеров плитки

В Windows 8 для поддержки широкой плитки для приложения нужно было указать в манифесте приложения ресурс широкой плитки. В Windows 8.1 для поддержки большой плитки (Square310x310) нужно указать в манифесте ресурс большой плитки.

Примечание  Большая плитка может поддерживаться только в приложении, которое также поддерживает широкую плитку.

Средняя (Square150x150) и маленькая (Square70x70) плитки поддерживаются во всех приложениях. Ресурсы маленькой плитки также можно указать в манифесте. Если приложение не предоставляет изображение для маленькой плитки (полученное в результате самостоятельного масштабирования или в виде отдельного ресурса), то Windows 8.1 автоматически уменьшает изображение средней плитки.

Как и в Windows 8, рекомендуется предоставлять отдельные ресурсы для каждого поддерживаемого размера плитки с каждым из четырех коэффициентов масштабирования (0,8x, 1x, 1,4x и 1,8x). Это обеспечит четкость плитки на любом экране и отсутствие артефактов масштабирования. Вы также можете указать ресурсы изображений для темы с высокой контрастностью, чтобы улучшить поддержку специальных возможностей.

Отображение имени приложения на плитках разного размера

В Windows 8 в манифесте приложения указывались размеры плитки, на которой должно отображаться имя приложения. Это можно делать и в Windows 8.1, но в новом формате. Учтите, что на маленькой плитке (Square70x70) нельзя показывать имя приложения.

Объявление размера закрепления по умолчанию

В Windows 8 приложение, поддерживающее широкую плитку, закреплялось на начальном экране в виде широкой плитки, а остальные приложения — в виде средних плиток. В Windows 8.1 можно изменить это правило и объявить как размер для закрепления по умолчанию среднюю или широкую плитку (но не маленькую и не большую). Не забывайте, что в Windows 8.1 приложение не закрепляется на начальном экране автоматически после установки. Оно появляется в представлении Все приложения, и пользователь должен явно выбрать закрепление приложения на начальном экране.

Изменения в схеме манифеста приложения

Теперь в манифесте задается дополнительное пространство имен "https://schemas.microsoft.com/appx/2013/manifest", включающее элементы схемы, в которых объявляются новые функции, описанные в этом разделе. В следующем примере показаны некоторые новые и переименованные атрибуты, которые входят в манифест. Обратите внимание, что ресурс широкой плитки входит в элемент DefaultTile, где также явно объявляется предпочтительный размер по умолчанию. Для приложения также заявляется отображение имени только на средней и широкой плитках, но не на большой.

<Package 
    xmlns="https://schemas.microsoft.com/appx/2010/manifest" 
    xmlns:wb="https://schemas.microsoft.com/appx/2013/manifest">
    
...

<wb:VisualElements 
    DisplayName="Your app name" 
    Description="App description" 
    BackgroundColor="#464646" 
    ForegroundText="light" 
    ToastCapable="true" 
    Square150x150Logo="Assets\Medium150x150Tile.png" 
    Square30x30Logo="Assets\APVLogo.png">
    
    <wb:DefaultTile 
        Square70x70Logo="Assets\Small70x70Tile.png" 
        Wide310x150Logo="Assets\Wide310x150Tile.png" 
        Square310x310Logo="Assets\Large310x310Tile.png" 
        ShortName="App" 
        DefaultSize="square150x150Logo">
        
        <wb:ShowNameOnTiles>
            <wb:ShowOn Tile="square150x150Logo"/>
            <wb:ShowOn Tile="wide310x150Logo"/> 
        </wb:ShowNameOnTiles>
    </wb:DefaultTile>
    
    <wb:LockScreen 
        Notification="badgeAndTileText" 
        BadgeLogo="Assets\badge.png"/>
    
    <wb:SplashScreen Image="Assets\SplashScreen.png"/>
</wb:VisualElements>

Изменения уведомлений на плитке

Отправляя уведомление для плитки, помните, что приложение может получить его, работая в Windows 8.1 или в Windows 8. Поскольку новые имена существующих шаблонов поддерживаются только в Windows 8.1, в схему добавлен атрибут fallback. Включив атрибут fallback в полезные данные уведомления, можно указать шаблон Windows 8.1 вместе с шаблоном Windows 8 на случай, если уведомление будет получено в системе Windows 8. Чтобы использовать новые имена шаблонов и атрибут fallback, включите новый атрибут version со значением 2 в элемент visual, как показано здесь.

<tile>
  <visual version="2">
    <binding template="TileSquare150x150Image" fallback="TileSquareImage" branding="None">
      <image id="1" src="Assets/Images/w6.png"/>
    </binding>
    <binding template="TileWide310x150Image" fallback="TileWideImage" branding="None">
      <image id="1" src="Assets/Images/sq5.png"/>
    </binding>
    <binding template="TileSquare310x310Image" branding="None">
      <image id="1" src="Assets/Images/sq6.png"/>
    </binding>
  </visual>
</tile>

Обратите внимание, что атрибут fallback нельзя использовать с большими плитками, поскольку их не было в Windows 8. Уведомления Windows 8 работают в Windows 8.1, не требуя изменений, но они не могут использовать большие плитки.

Примечание  Шаблон большой плитки (Square310x310) должен указываться последней привязкой в полезных данных. Система Windows 8 останавливает анализ уведомления, когда обнаруживается привязка, которую не удается распознать по имени шаблона или резервному имени. Поэтому анализ уведомления всегда будет останавливаться на привязке 310×310.

Задание размеров плитки для очереди уведомлений

В Windows 8 очередь уведомлений включалась сразу для средней и широкой плиток. В Windows 8.1 в класс TileUpdater добавлены методы, которые позволяют включать очередь уведомлений для отдельных размеров плитки.

Новые размеры плитки и альтернативные логотипы для вспомогательной плитки

В Windows 8.1 всплывающий элемент, который отображается, когда пользователи закрепляют содержимое в виде вспомогательной плитки, позволяет выбирать любой из возможных размеров и стилей вспомогательной плитки. Вспомогательная плитка может поддерживать любой размер, который поддерживается плиткой данного приложения. Если не указать маленькое изображение для вспомогательной плитки, то Windows 8.1 уменьшает изображение квадратной плитки и использует его.

Помимо изображения вспомогательной плитки по умолчанию, вы можете указать до трех альтернативных версий для каждого размера плитки (всего не более 12 версий). При помощи метода AlternateVisualElements вы также можете указать альтернативный маленький логотип для каждого из трех размеров плитки (квадратная, широкая, большая), поддерживающих логотипы.

Улучшенная сортировка вспомогательных плиток по фонетическим строкам

В некоторых символьных языках (например, японском) порядок сортировки в пользовательском интерфейсе зависит от фонетической транскрипции символов, составляющих отображаемое имя приложения. Строка фонетической транскрипции хранится отдельно от отображаемого имени. Пользователи, закрепляющие вспомогательную плитку, могут указать отображаемое имя для плитки во всплывающем элементе, но не могут задать фонетическую транскрипцию. Windows пытается определить фонетическую строку, но не всегда делает это правильно.

Иногда в приложении известна правильная фонетическая строка, поскольку пользователь определил ее в пользовательском элементе управления, предоставляемом приложением. В Windows 8.1 приложение может передать эту строку в Windows в новом свойстве SecondaryTile.PhoneticName. Учтите, что эта строка фонетического имени привязана к отображаемому имени по умолчанию для вспомогательной плитки. Поэтому, если пользователь изменит отображаемое имя во всплывающем элементе закрепления, вместо этой строки будет использоваться фонетическая транскрипция, определенная системой.

Обновления для поиска

[Скачайте пример элемента управления SearchBox.]

В Windows 8.1 появился новый элемент управления "Поле поиска", помогающий отображать результаты поиска: Windows.UI.Xaml.Controls.SearchBox для приложений на XAML и WinJS.UI.SearchBox для приложений на JavaScript.

Теперь поле поиска можно включать в приложение как элемент разметки. Новый элемент управления поддерживает все функции работы с шаблонами и стилями.

В Windows 8.1 ваше приложение полностью определяет работу поиска. Поле поиска интегрируется с контрактом "Поиск" для расширения возможностей и подробной настройки. Ваши приложения могут поддерживать функции, отвечающие запросам пользователей.

Поле поиска поддерживает варианты поиска и результаты поиска, передаваемые приложением, журнал поиска по каждому приложению и все функции взаимодействия с сенсорным экраном, клавиатурой и мышью.

Макет поля поиска имеет следующий вид.

Элемент управления “Поиск в приложении” для универсальных приложений Windows

Вот пример результатов поиска, отображаемых в элементе управления "Поле поиска".

Пример результатов в поле поиска для MSFT.

Элемент управления "Поле поиска" поддерживает интеграцию с редактором метода ввода.

Элемент управления “Поиск в приложении” с редактором метода ввода.

Варианты обновляются, когда пользователь вводит каждую букву с помощью редактора метода ввода. В варианты включаются идеографические символы китайского языка, предлагаемые на основе частичного фонетического ввода. Интерфейс кандидатов редактора метода ввода не скрывает всплывающий элемент вариантов поиска. Поле поиска поддерживает навигацию по текстовому полю, списку кандидатов редактора метода ввода и вариантам поиска с помощью клавиатуры.

Обновления для общего доступа

[Рассмотрите образцы источника передаваемого содержимого и получателя общего содержимого.]

В Windows 8.1 изменены возможности общего доступа и порядок использования контракта отправки данных в приложениях.

Добавление новых форматов данных в DataPackage

В Windows 8.1 приложения-источники в контракте отправки данных могут предоставлять несколько способов возврата к общему содержимому. В Windows 8.1 формат Uri разделен на два новых формата данных в классе DataPackage и добавлены четыре новых строго типизированных свойства в классе DataPackagePropertySet. Для DataPackage формат Uri считается устаревшим и заменен форматами WebLink и ApplicationLink.

Если пользователь ничего не выбрал, то передается свойство WebLink, и приложение-источник передает неявное выделение отображаемого содержимого. Заполняя этот формат, приложение-источник передает содержимое текущей страницы в виде универсального кода ресурса (URI). Передаваемая ссылка указывает на веб-страницу, которую просматривает пользователь, поэтому этот формат всегда начинается с http или https.

Свойство ApplicationLink также передается, если пользователь ничего не выбрал, и приложение-источник вновь передает неявное выделение отображаемого содержимого. Заполняя этот формат, приложение-источник передает содержимое текущей страницы в виде универсального кода ресурса (URI). Передаваемый URI содержит схему, которая обрабатывается приложением-источником. Когда приложение-источник активируется по этому протоколу URI, отображается содержимое, которое просматривается в данный момент. Этот формат представляет общее содержимое, предоставляя возможность вернуться к содержимому с помощью протокола приложения.

Форматы WebLink и ApplicationLink не исключают друг друга. WebLink ссылается на содержимое в Интернете, а ApplicationLink ссылается на содержимое в приложении. Например, приложение для чтения новостей может иметь содержимое в обоих форматах и с помощью URI открывать для пользователя статью на веб-сайте или возвращать пользователя к этой статье в приложении. Порядок обработки URI выбирается приложением-получателем. Например, приложение "Почта" может использовать формат WebLink, поскольку ссылку можно отправить через Интернет и получить не в Windows, а в другой системе. Но в приложении для чтения может использоваться формат ApplicationLink, поэтому оно снова активирует приложение-источник и возвращает пользователя к исходному содержимому.

Сопутствующее свойство ContentSourceWebLink определяет источник передаваемого содержимого. Оно передается, если приложение предоставляет веб-ссылку на содержимое. Если пользователь выбирает содержимое явно, формат WebLink не заполняется, поскольку значение для формата WebLink не совпадает с выбором пользователя. Заполнение этих данных не означает, что веб-страница содержит выбор пользователя, а просто указывает страницу как источник содержимого.

Второе сопутствующее свойство ContentSourceApplicationLink также определяет источник передаваемого содержимого. Оно передается, если нужно, чтобы пользователь вернулся к содержимому, отображаемому в приложении. Когда пользователь выбирает содержимое, формат ApplicationLink не заполняется, поскольку значение для формата ApplicationLink в этом случае не совпадает с выбором пользователя. Заполнение этих данных не означает, что прямая ссылка в приложении содержит выбор пользователя, а просто указывает приложение как источник содержимого.

Например, пользователь просматривает статью в приложении для чтения, выделяет фрагмент и передает его в OneNote. Чтобы привязать фрагмент к статье, приложение для чтения не использует формат WebLink или ApplicationLink, поскольку статья не эквивалентна передаваемому фрагменту. Поэтому приложение использует свойства ContentSourceWebLink и ContentSourceApplicationLink. OneNote добавляет выделенный текст вместе с указанием источника. Затем пользователь может прочитать фрагмент в OneNote и вернуться в приложение для чтения или на веб-страницу, чтобы прочитать контекст данного фрагмента.

Улучшение отклика общего доступа

В Windows 8.1 приложения, использующие контракт отправки данных, могут повышать скорость отклика, закрывая панель общего доступа программным способом.

Чтобы закрыть панель общего доступа, вызовите новый метод DismissUI. Вызов метода DismissUI равносилен действию пользователя, касающегося экрана вне панели общего доступа. Если операция передачи данных занимает продолжительное время, приложение продолжает работу. Для краткосрочной операции допускается выполнение в течение 10 секунд. Затем она принудительно завершается.

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

Имя семейства пакетов

В Windows 8.1 приложения-источники для контракта отправки данных могут указывать имя семейства пакета для приложений-получателей, чтобы последние могли обеспечить возможность возврата, когда запускается указанное в свойстве ApplicationLink приложение.

Имя семейства пакетов служит уникальным идентификатором пакета приложения. Когда приложение-источник передает этот идентификатор приложению-получателю, оно может обеспечить возможность возврата, вызвав метод LaunchUriAsync с указанным ApplicationLink. Если схема URI не обрабатывается, например если пользователь удалил приложение или если URI направляется на другое устройство, где данное приложение не установлено, то в диалоговом окне пользователю предлагается найти приложение в Магазине Windows. По умолчанию пользователь переходит в Магазин, но не к нужному приложению. Если включить имя семейства пакетов в объект LauncherOptions, который передается в LaunchUriAsync, то у пользователя запрашивается приложение для установки, а затем открывается страница этого приложения в Магазине.

Формат Uri считается устаревшим.

Как упоминалось ранее, в Windows 8.1 формат Uri разделен на два новых формата данных в классе DataPackage и добавлены четыре новых строго типизированных свойства в классе DataPackagePropertySet. Для DataPackage формат Uri считается устаревшим и заменен форматами WebLink и ApplicationLink. Формат Uri сохранен в качестве псевдонима для формата WebLink.

Чудо-кнопки работают на любом экране

Если в Windows 8 на экране было открыто несколько приложений, то при вызове пользователем чудо-кнопок система отображала чудо-кнопки для того приложения, которое занимало больше всего места на экране. В Windows 8.1 система отображает чудо-кнопки для последнего приложения, с которым взаимодействовал пользователь, независимо от того, сколько приложений открыто на экране и используется ли несколько экранов. Например, если пользователь выберет чудо-кнопку "Параметры", система отобразит всплывающий элемент "Параметры" для последнего использованного приложения.

Разрабатывайте свое приложение так, чтобы оно работало с чудо-кнопками вне зависимости от размера приложения. В частности, ширина всплывающего элемента "Параметры" должна быть меньше или равна текущей ширине приложения.

Создание приложений, интегрированных с контактами и событиями

[Скачайте примеры API диспетчера контактов, API встреч и Выполнение действий с контактами.]

Windows 8.1 позволяет использовать в приложении возможности работы с контактами и событиями. Пользователи вашего приложения могут просматривать данные о своих знакомых из приложения и общаться с людьми при помощи интегрированных средств — сообщений, почты, звонков, видеосвязи и др. Вы также можете привлечь пользователей возможностью просматривать календарь и добавлять в него события, оставаясь в вашем приложении.

Следующие новые API позволяют вашему приложению просматривать карточки контактов и управлять событиями из приложения.

  • ShowContactCard метод

    Позволяет приложениям запрашивать операционную систему для получения контакта пользователя и показывать контактные данные пользователя в карточке контакта.

  • AppointmentsProvider пространство имен

    Поддерживает запросы на добавление, замену и удаление встречи при помощи активации, с которой взаимодействует организатор встреч.

  • AppointmentManager класс

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

  • Activation пространство имен

    Позволяет приложению обрабатывать параметры активации для новых контрактов организатора встреч и контактов, поддерживаемых Windows.

Синтез речи

[Скачайте пример синтеза речи.]

В Windows 8.1 появился API Windows.Media.SpeechSynthesis, который поддерживает функцию синтеза речи — также известную как преобразование текста в речь — в универсальных приложениях Windows.

Используйте синтез речи, чтобы запрашивать у пользователя данные, привлекать внимание к уведомлениям приложения и окнам сообщений, произносить инструкции (например, при пошаговой навигации) и читать содержимое: текст, сообщения электронной почты, RSS-каналы, книги и результаты поиска.

В Windows 8.1 входит несколько модулей синтеза речи, называемых голосами. Для каждого голоса задано понятное имя, например Microsoft David (мужской голос, язык en-US), Microsoft Zira (женский голос, язык en-US) и Microsoft Hazel (женский голос, язык en-UK). Вы можете задавать понятное имя в приложении, а пользователь может выбирать его на панели управления в разделе Язык.

Синтез речи в Windows 8.1 дает следующие возможности.

  • Настраивать для синтезатора речи пол, голос и язык.

  • Преобразовывать обычный текст в речь с использованием характеристик и свойств по умолчанию для текущего голоса.

  • Создавать речь из строки, содержащей код на SSML, для настройки характеристик голоса, произношения, громкости, высоты, скорости, акцента и т. п.

  • Считывать звуковые данные, созданные модулем синтеза речи, из потока с произвольным доступом и записывать их в поток.

Преобразование обычного текста в речь

В этом примере показано, как приложение Магазина Windows с помощью объекта SpeechSynthesizer создает звуковой поток, а затем преобразует обычную текстовую строку в речь.

// The object for controlling and playing audio.
var audio = new Audio();

// The object for controlling the speech-synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
synth.synthesizeTextToStreamAsync("hello World").then(function (markersStream) {

    // Convert the stream to a URL Blob.
    var blob = MSApp.createBlobFromRandomAccessStream(markersStream.ContentType, markersStream);

    // Send the Blob to the audio object.
    audio.src = URL.createObjectURL(blob, { oneTimeOnly: true });
    audio.play();
});
// The media object for controlling and playing audio.
MediaElement mediaElement = this.media;

// The object for controlling the speech-synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Hello World");

// Send the stream to the media object.
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();

Создание речи из кода на SSML

В следующем примере показано, как приложение Магазина Windows с помощью объекта SpeechSynthesizer создает звуковой поток, а затем преобразует текстовую строку SSML в речь.

// The string to speak with SSML customizations.
var Ssml = "<speak version='1.0' " +
    "xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" +
    "Hello <prosody contour='(0%,+80Hz) (10%,+80%) (40%,+80Hz)'>World</prosody> " + 
    "<break time='500ms' />" +
    "Goodbye <prosody rate='slow' contour='(0%,+20Hz) (10%,+30%) (40%,+10Hz)'>World</prosody>" +
    "</speak>";

// The object for controlling and playing audio.
var audio = new Audio();

// The object for controlling the speech-synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from SSML.
synth.synthesizeSsmlToStreamAsync(Ssml).then(function(synthesisStream){

    // Convert the stream to a URL Blob.
    var blob = MSApp.createBlobFromRandomAccessStream(synthesisStream.ContentType, synthesisStream);

    // Send the Blob to the audio object.
    audio.src = URL.createObjectURL(blob, { oneTimeOnly: true });
    audio.play();
});
// The string to speak with SSML customizations.
string Ssml =
    @"<speak version='1.0' " +
    "xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" +
    "Hello <prosody contour='(0%,+80Hz) (10%,+80%) (40%,+80Hz)'>World</prosody> " + 
    "<break time='500ms' />" +
    "Goodbye <prosody rate='slow' contour='(0%,+20Hz) (10%,+30%) (40%,+10Hz)'>World</prosody>" +
    "</speak>";

// The media object for controlling and playing audio.
MediaElement mediaElement = this.media;

// The object for controlling the speech-synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from SSML.
SpeechSynthesisStream stream = await synth.synthesizeSsmlToStreamAsync(Ssml);

// Send the stream to the media object.
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();

Обновления в управлении фоновыми задачами

(Скачайте пример Background task прямо сейчас.)

В Windows 8.1 добавлено несколько новых возможностей для управления фоновыми задачами:

Режим "Не беспокоить" и фоновые задачи

"Не беспокоить" — это новая функция в Windows 8.1, с помощью которой пользователь может выделить в течение суток особые часы, когда он не хочет отвлекаться на уведомления. Эта функция также останавливает все фоновые операции, связанные с универсальными приложениями Windows, чтобы они не беспокоили пользователя, и может способствовать более длительной работе устройства в режиме ожидания с подключением.

Когда система переходит в режим "Не беспокоить", фоновые задачи ставятся в очередь и не запускаются до окончания действия режима. При включении режима "Не беспокоить" система завершает работу всех выполняющихся фоновых задач.

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

По умолчанию в режиме "Не беспокоить" разрешаются 2 исключения: входящие телефонные звонки из приложения с поддержкой возможности звонков при установленном экране блокировки и сигналы будильника, заданные пользователем в приложении будильника по умолчанию. Если приложение поддерживает возможность звонков при включенном экране блокировки и для параметра IncomingCall задано значение TRUE, то соответствующая фоновая задача будет выполнена, а уведомление — доставлено. Уведомления от сигналов будильника, настроенные пользователем в приложении будильника по умолчанию, будут доставляться в период действия режима "Не беспокоить".

По умолчанию режим "Не беспокоить" продолжается с полуночи до 6 часов утра, при этом входящие звонки разрешены. Пользователи могут изменить эти настройки или отключить режим "Не беспокоить" на вкладке "Уведомления" в разделе "Приложения" диалогового окна Изменение параметров компьютера. Режим "Не беспокоить" доступен во всех системах.

Отмена бездействующих задач

Инфраструктура фоновых задач Windows не только выделяет ресурсы для выполнения фоновых задач, но и выявляет бездействующие или зависшие фоновые задачи. Фоновая задача считается бездействующей или зависшей, если она не использует выделенный ей минимальный объем ресурсов ЦП или квоту сетевых ресурсов за определенное минимальное время (которое может различаться в зависимости от состояния системы). При обнаружении бездействующей или зависшей задачи система отправляет ей уведомление об отмене, чтобы задача могла завершить работу. Если фоновая задача не прекращает работу и не закрывается в течение 5 секунд, то приложение считается не отвечающим, и система завершает его.

Не допускайте завершения работы вашего приложения по инициативе системы из-за бездействующей или зависшей фоновой задачи в Windows 8.1: всегда ассоциируйте с фоновыми задачами обработчики отмены, чтобы эти задачи корректно завершались. Подробную информацию и фрагменты кода см. в разделе Решение проблем с бездействующими или зависшими задачами.

Подсказка о трудозатратах для фоновой задачи

Windows 8.1 предоставляет фоновым задачам подсказки о доступности ресурсов. При активации фоновая задача может использовать эту подсказку, чтобы запланировать определенный объем работы. Могут быть получены три состояния доступности ресурсов для фоновых задач: низкая, средняя и высокая. Дополнительные сведения см. в BackgroundWorkCost и BackgroundWorkCostValue.

Использование командлетов PowerShell для фоновых задач

Для получения информации о выполняющихся фоновых задачах разработчики могут использовать новые команды PowerShell AppBackgroundTask и новый модуль конструктора командлета BackgroundTasksManager. Это может оказаться очень полезным при реализации и отладке фоновых задач. Подробнее см. в разделе о командлетах PowerShell для фоновых задач.

Поддержка приложения будильника на экране блокировки

[Скачайте пример уведомлений будильника.]

В Windows 8.1 один из слотов экрана блокировки используется для приложений будильника. При помощи класса AlarmApplicationManager приложения запрашивают у пользователя разрешение на их назначение в качестве системного приложения будильника. Если пользователь предоставляет разрешение (или помещает приложение в слот будильника с помощью панели управления), приложение занимает слот и становится системным приложением будильника. Затем уведомления будильника, выпускаемые системным приложением будильника, показываются пользователю с точностью до одной секунды. Уведомления будильника могут выпускаться только приложением, находящимся в слоте будильника. Уведомления будильника, выпускаемые другими приложениями, обрабатываются как обычные уведомления.

Чтобы планировать уведомления будильника, создавайте всплывающие уведомления с элементом commands. Чтобы указать звук будильника, который будет воспроизводиться при выпуске уведомления, используйте элемент audio. Звук будет воспроизводиться, даже если в системе активирован режим без звука.

Обновления в планировании рабочих элементов

API CoreDispatcher (Windows::UI::Core:CoreDispatcher) теперь предоставляет дополнительные возможности управления приоритетами в планировании рабочих элементов.

В Windows 8.1 работы распределяются по приоритету в следующем порядке:

  1. SendMessage (наивысший приоритет)
  2. CoreDispatcherPriority.High
  3. CoreDispatcherPriority.Normal (включает сообщения окон и вызовы модели COM)
  4. Любые сообщения ввода на устройстве
  5. CoreDispatcherPriority.Low
  6. CoreDispatcherPriority.Idle (самый низкий приоритет, используется для фоновых задач)

Чтобы изменить приоритеты задач, используйте следующие новые члены для типа CoreDispatcher:

  • Метод CoreDispatcher::ShouldYield (2 перегруженные версии) — запрашивает, должен ли вызывающий объект продолжать работу, если в очереди задач есть элементы с указанным или более высоким приоритетом.

  • Свойство CoreDispatcher::CurrentPriority— возвращает или задает текущий приоритет последней задачи, обработанной CoreDispatcher. Когда приложение ведет обработку с некоторым приоритетом и поступает работа с более высоким приоритетом, установите это свойство, чтобы повысить приоритет текущей задачи. Тогда ShouldYield даст более точные результаты.