Поделиться через


Настройка параметров камеры с помощью приложения устройства UWP

В Windows 8.1 приложения устройств UWP позволяют производителям устройств настраивать всплывающее окно, отображающее дополнительные параметры камеры в некоторых приложениях камеры. В этом разделе представлен всплывающий элемент "Дополнительные параметры", отображаемый API Камера CaptureUI, и показано, как версия приложения устройства UWP для примера камеры заменяет всплывающее меню по умолчанию пользовательским всплывающий элемент. Дополнительные сведения о приложениях устройств UWP см. в статье "Знакомство с приложениями устройств UWP".

Примечание.

В Windows 8.1 встроенное приложение камеры не отображает кнопку "Дополнительные параметры" и поэтому не может отображать приложение устройства UWP для отображения дополнительных параметров камеры. Однако класс Камера CaptureUI, доступный для всех приложений UWP, имеет кнопку "Дополнительные параметры" и может отображать приложения устройств UWP из него.

Версия приложения устройства UWP для примера камеры использует страницу DeviceAppPage.xaml для демонстрации пользовательского всплывающего элемента пользовательского всплывающего элемента для получения дополнительных параметров камеры. В примере также применяются эффекты камеры с помощью MFT драйвера камеры (преобразование основы мультимедиа). Дополнительные сведения об этом см. в разделе "Создание драйвера камеры MFT".

Примечание.

Примеры кода, показанные в этом разделе, основаны на версии приложения устройства UWP для примера камеры . Этот пример также доступен в JavaScript и C++. Скачайте примеры, чтобы просмотреть последние версии кода.

Дополнительные варианты для камер

Чем больше возможностей камеры, тем больше возможностей — это функциональные возможности, предоставляемые приложением устройства UWP, когда другое приложение UWP, захватывает или просматривает видео с камеры с помощью API Камера CaptureUI. Он доступен по ссылке "Дополнительные параметры" в окне параметров Камера. Он не является полноэкранным, но отображается в всплывающем элементе управления, который является элементом управления для отображения упрощенного контекстного пользовательского интерфейса, который закрывается, когда пользователь щелкает или нажимает вне него.

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

Если приложение устройства UWP не установлено для камеры, Windows предоставляет больше возможностей камеры по умолчанию. Если Windows обнаруживает, что приложение устройства UWP установлено для вашей камеры и что приложение выбрало windows.cameraSettings расширение, ваше приложение заменяет интерфейс по умолчанию, предоставляемый Windows.

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

  1. Откройте приложение UWP, использующее API Камера CaptureUI (пример Камера CaptureUI, например)

  2. Нажмите кнопку " Параметры " в пользовательском интерфейсе

  3. Откроется всплывающее меню Камера параметров, в меню с основными параметрами для настройки разрешения и стабилизации видео

  4. В всплывающем меню параметров Камера нажмите кнопку "Дополнительные параметры"

  5. Откроется всплывающее меню "Дополнительные параметры "

    • Всплывающее меню по умолчанию отображается при отсутствии приложения устройства UWP для камеры

    • Настраиваемый всплывающий элемент отображается при установке приложения устройства UWP для камеры

Side-by-side images of the default flyout for more camera options and a custom flyout.

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

Необходимые компоненты

Необходимые условия:

  1. Настройте компьютер разработки. Сведения о скачивании средств и создании учетной записи разработчика см. в статье "Начало работы ".

  2. Свяжите приложение с магазином. Сведения об этом см. в статье "Создание приложения устройства UWP".

  3. Создайте метаданные устройства для принтера, который связывает его с приложением. Дополнительные сведения см. в статье "Создание метаданных устройства".

  4. Создайте пользовательский интерфейс для главной страницы приложения. Все приложения устройств UWP можно запустить с начального экрана, где они будут отображаться в полноэкранном режиме. Используйте интерфейс "Пуск", чтобы выделить продукт или службы таким образом, чтобы соответствовать определенным фирменной символике и функциям ваших устройств. Существуют специальные ограничения на тип элементов управления пользовательским интерфейсом, которые он может использовать. Чтобы приступить к разработке полноэкранного интерфейса, ознакомьтесь с принципами проектирования в Microsoft Store.

Шаг 1. Регистрация расширения

Чтобы Windows распознала, что приложение может предоставить настраиваемый всплывающий элемент для дополнительных параметров камеры, он должен зарегистрировать расширение параметров камеры. Это расширение объявляется в элементе Extension с атрибутом Category , равным значению windows.cameraSettings. В примерах Executable C# и C++ для атрибута задано DeviceAppForWebcam.exe значение, а EntryPoint атрибут имеет значение DeviceAppForWebcam.App.

Вы можете добавить расширение параметров камеры на вкладке "Объявления" конструктора манифестов в Microsoft Visual Studio. Можно также вручную изменить XML-код манифеста пакета приложения с помощью редактора XML (текста). Щелкните правой кнопкой мыши файл Package.appxmanifest в Обозреватель решений для параметров редактирования.

В этом примере показано расширение параметров камеры в элементе, как оно отображается в Extension файле манифеста пакета приложения Package.appxmanifest.

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
  <Identity Name="Microsoft.SDKSamples.DeviceAppForWebcam.CPP" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="1.0.0.0" />
  <Properties>
    <DisplayName>DeviceAppForWebcam CPP sample</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\storeLogo-sdk.png</Logo>
  </Properties>
  <Prerequisites>
    <OSMinVersion>6.3.0</OSMinVersion>
    <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  </Prerequisites>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="DeviceAppForWebcam.App" Executable="$targetnametoken$.exe" EntryPoint="DeviceAppForWebcam.App">
      <VisualElements DisplayName="DeviceAppForWebcam CPP sample" Logo="Assets\squareTile-sdk.png" SmallLogo="Assets\smallTile-sdk.png" Description="DeviceAppForWebcam CPP sample" ForegroundText="light" BackgroundColor="#00b2f0">
        <DefaultTile ShortName="DeviceApp CPP" ShowName="allLogos" />
        <SplashScreen Image="Assets\splash-sdk.png" BackgroundColor="#00b2f0" />
      </VisualElements>
      <Extensions>
        <Extension Category="windows.cameraSettings" Executable="DeviceAppForWebcam.exe" EntryPoint="DeviceAppForWebcam.App" />
      </Extensions>
    </Application>
  </Applications>
</Package>

Шаг 2. Создание пользовательского интерфейса

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

Рекомендации по проектированию

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

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

Всплывающие измерения

Всплывающий элемент, отображающий дополнительные параметры камеры, составляет 625 пикселей с высотой и 340 пикселей. Область, содержащая текст дополнительных параметров в верхней части окна, предоставляется Windows и составляет около 65 пикселей с высотой 560 пикселей для просматриваемой области пользовательского всплывающего элемента. Настраиваемый всплывающий элемент не должен превышать 340 пикселей в ширину.

flyout dimensions for more camera options.

Примечание.

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

Предлагаемые эффекты

  • Цветовые эффекты. Например, серое масштабирование, тон сепии или солнечный цвет всей картины.

  • Эффекты отслеживания лиц. Где лицо определяется на рисунке и наложение, например шляпа или пара очков, добавляется поверх него.

  • Режимы сцены. Это предустановленные режимы экспозиции и фокусировки для различных условий освещения.

Предлагаемые параметры

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

  • Реализуйте основные свойства, которые дополняют другие параметры, предоставляемые приложением устройства UWP. Например, многие устройства могут предоставлять элементы управления для настройки яркости, контрастности, мерцания, фокуса и экспозиции, но устройство, реализующее TrueColor для автоматической настройки яркости и контрастности, может не потребоваться предоставить эти параметры.

Ограничения

  • Не открывайте пользовательский всплывающий элемент приложения устройства UWP из основного приложения (вызывая CameraOptionsUI.Show метод), если приложение не выполняет потоковую передачу или запись.

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

  • Не изменяйте разрешение в пользовательском всплывающем элементе.

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

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

Шаг 3. Обработка активации

Если приложение объявило расширение параметров камеры, оно должно реализовать OnActivated метод для обработки события активации приложения. Это событие активируется, когда приложение UWP с помощью класса Камера CaptureUI вызывает метод Камера OptionsUI.Show. Активация приложения — это когда приложение может выбрать, какая страница запустится при запуске приложения. Для приложений, объявленных расширением параметров камеры, Windows передает видеоустройство в аргументах активированного события: Windows.ApplicationModel.Activation.IActivatedEventArgs.

Приложение устройства UWP может определить, что активация предназначена для параметров камеры (что кто-то просто коснулся дополнительных параметров в диалоговом окне параметров Камера), когда свойство аргумента kind события равно Windows.ApplicationModel.Activation.ActivationKind.КамераПараметры.

В этом примере показан обработчик событий активации в методе OnActivated , как он отображается в файле App.xaml.cs . Затем аргументы события создаются как Windows.ApplicationModel.Activation. КамераПараметры ActivatedEventArgs и отправляется в Initialize метод пользовательского всплывающего элемента (DeviceAppPage.xaml.cs).

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.CameraSettings)
    {
        base.OnActivated(args);
        DeviceAppPage page = new DeviceAppPage();
        Window.Current.Content = page;
        page.Initialize((CameraSettingsActivatedEventArgs)args);

        Window.Current.Activate();
    }
}

Шаг 4. Управление параметрами и эффектами

Initialize При вызове метода пользовательского всплывающего элемента (DeviceAppPage.xaml.cs) видеоустройство передается всплывающему элементу через аргументы события. Эти аргументы предоставляют свойства для управления камерой:

  • Аргы . Свойство VideoDeviceController предоставляет объект типа Windows.Media.Devices.VideoDeviceController . Этот объект предоставляет методы для настройки стандартных параметров.

  • Аргы . Свойство VideoDeviceExtension — это указатель на MFT драйвера камеры. Это свойство будет иметь значение NULL, если интерфейсы Driver MFT не предоставляются. Дополнительные сведения о MFT драйвера камеры см. в разделе "Создание драйвера камеры MFT".

В этом примере показана часть Initialize метода, как она отображается в файле DeviceAppPage.xaml.cs . Здесь создаются контроллер видеоустройства (объект videoDevController) и драйвер камеры MFT (объект lcWrapper), а всплывающий элемент заполняется текущими параметрами камеры.

public void Initialize(CameraSettingsActivatedEventArgs args)
{
    videoDevController = (VideoDeviceController)args.VideoDeviceController;

    if (args.VideoDeviceExtension != null)
    {
        lcWrapper = new WinRTComponent();
        lcWrapper.Initialize(args.VideoDeviceExtension);
    }

    bool bAuto = false;
    double value = 0.0;

    if (videoDevController.Brightness.Capabilities.Step != 0)
    {
        slBrt.Minimum = videoDevController.Brightness.Capabilities.Min;
        slBrt.Maximum = videoDevController.Brightness.Capabilities.Max;
        slBrt.StepFrequency = videoDevController.Brightness.Capabilities.Step;
        videoDevController.Brightness.TryGetValue(out value);
        slBrt.Value = value;
    }
    else
    {
        slBrt.IsEnabled = false;
    }
    if (videoDevController.Brightness.Capabilities.AutoModeSupported)
    {
        videoDevController.Brightness.TryGetAuto(out bAuto);
        tsBrtAuto.IsOn = bAuto;
    }
    else
    {
        tsBrtAuto.IsOn = false;
        tsBrtAuto.IsEnabled = false;
    }

    if (videoDevController.Contrast.Capabilities.Step != 0)
    {
        slCrt.Minimum = videoDevController.Contrast.Capabilities.Min;
        slCrt.Maximum = videoDevController.Contrast.Capabilities.Max;
        slCrt.StepFrequency = videoDevController.Contrast.Capabilities.Step;
        videoDevController.Contrast.TryGetValue(out value);
        slCrt.Value = value;
    }
    else
    {
        slCrt.IsEnabled = false;
    }
    // . . .
    // . . .
    // . . .

Драйвер камеры MFT демонстрируется в примере Driver MFT . Дополнительные сведения о MFT драйвера камеры см. в разделе "Создание драйвера камеры MFT".

Шаг 5. Применение изменений

При внесении изменений в элементы управления во всплывающем элементе событие "Изменено" соответствующего элемента управления используется для применения изменений к контроллеру видеоустройства (объект videoDevController) и драйверу камеры MFT (объект lcWrapper).

В этом примере показаны измененные методы, которые применяют изменения к контроллеру видеоустройства и драйверу камеры MFT, как они отображаются в файле DeviceAppPage.xaml.cs .

protected void OnBrtAutoToggleChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Brightness.TrySetAuto(tsBrtAuto.IsOn);
    slBrt.IsEnabled = !tsBrtAuto.IsOn;
}

protected void OnBrtSliderValueChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Brightness.TrySetValue(slBrt.Value);
}

protected void OnCrtAutoToggleChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Contrast.TrySetAuto(tsCrtAuto.IsOn);
    slCrt.IsEnabled = !tsCrtAuto.IsOn;
}

protected void OnCrtSliderValueChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Contrast.TrySetValue(slCrt.Value);
}

protected void OnFocusAutoToggleChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Focus.TrySetAuto(tsFocusAuto.IsOn);
    slFocus.IsEnabled = !tsFocusAuto.IsOn;
}

protected void OnFocusSliderValueChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Focus.TrySetValue(slFocus.Value);
}

protected void OnExpAutoToggleChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Exposure.TrySetAuto(tsExpAuto.IsOn);
    slExp.IsEnabled = !tsExpAuto.IsOn;
}

protected void OnExpSliderValueChanged(object sender, RoutedEventArgs e)
{
    videoDevController.Exposure.TrySetValue(slExp.Value);
}

protected void OnEffectEnabledToggleChanged(object sender, RoutedEventArgs e)
{
    if (tsEffectEnabled.IsOn)
    {
        lcWrapper.Enable();
    }
    else
    {
        lcWrapper.Disable();
    }
    slEffect.IsEnabled = tsEffectEnabled.IsOn;
}

protected void OnEffectSliderValueChanged(object sender, RoutedEventArgs e)
{
    lcWrapper.UpdateDsp(Convert.ToInt32(slEffect.Value));
}

Тестирование приложения

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

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

  • Для добавления в него сведений о приложении устройства требуется копия пакета метаданных устройства. Если у вас нет метаданных устройства, его можно создать с помощью мастера создания метаданных устройств, как описано в разделе "Создание метаданных устройства для приложения устройства UWP".

Примечание.

Чтобы использовать мастер разработки метаданных устройств, необходимо установить Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate или автономный пакет SDK для Windows 8.1, прежде чем выполнить действия, описанные в этом разделе. Установка Microsoft Visual Studio Express для Windows устанавливает версию пакета SDK, которая не включает мастер.

Следующие шаги по созданию приложения и установке метаданных устройства.

  1. Включите тестовую подпись.

    1. Запустите мастер разработки метаданных устройства из %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, дважды щелкнув DeviceMetadataWizard.exe

    2. В меню "Сервис" выберите "Включить подписывание тестов".

  2. Перезагрузите компьютер.

  3. Создайте решение, открыв файл решения (.sln). Нажмите клавишу F7 или перейдите к решению сборки> из верхнего меню после загрузки примера.

  4. Отключите и удалите принтер. Этот шаг необходим, чтобы Windows считывала обновленные метаданные устройства при следующем обнаружении устройства.

  5. Изменение и сохранение метаданных устройства. Чтобы связать приложение устройства с устройством, необходимо связать приложение устройства с устройством.

    Примечание.

    Если вы еще не создали метаданные устройства, см. статью "Создание метаданных устройства" для приложения устройства UWP.

    1. Если мастер разработки метаданных устройства еще не открыт, запустите его с %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, дважды щелкнув DeviceMetadataWizard.exe.

    2. Нажмите кнопку "Изменить метаданные устройства". Это позволит изменить существующий пакет метаданных устройства.

    3. В диалоговом окне "Открыть" найдите пакет метаданных устройства, связанный с приложением устройства UWP. (Он имеет расширение файла devicemetadata-ms .)

    4. На странице сведений о приложении устройства UWP введите сведения о приложении Microsoft Store в поле приложения устройства UWP. Щелкните импорт файла манифеста приложения UWP, чтобы автоматически ввести имя пакета, имя издателя и идентификатор приложения UWP.

    5. По завершении нажмите кнопку "Далее ", пока не перейдете на страницу "Готово ".

    6. На странице "Проверка пакета метаданных устройства" убедитесь, что все параметры правильны и выберите пакет метаданных устройства в хранилище метаданных на локальном компьютере проверка. Нажмите кнопку Сохранить.

  6. Повторно подключите устройство, чтобы Windows считывала обновленные метаданные устройства при подключении устройства.

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

    • Если у вас есть внутренняя камера, обновите компьютер в папке "Устройства и принтеры". Используйте диспетчер устройств для сканирования изменений оборудования. Windows должна считывать обновленные метаданные при обнаружении устройства.

Примечание.

Сведения об установке драйвера камеры MFT см. в разделе "Тестирование" в разделе "Создание драйвера камеры MFT".

Тестирование примеров

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

Затем следуйте примеру инструкций по тестированию, приведенным на странице примера Driver MFT.