Sdílet prostřednictvím


Přizpůsobení možností fotoaparátu pomocí aplikace pro zařízení s UPW

Important

Metadata zařízení jsou zastaralá a budou odebrána v budoucí verzi Windows. Informace o nahrazení této funkce naleznete v tématu Metadata kontejneru balíčku ovladačů.

Ve Windows 8.1 umožňují aplikace pro zařízení UWP výrobcům zařízení přizpůsobit nabídku, která v některých aplikacích fotoaparátu zobrazuje více možností fotoaparátu. This topic introduces the More options flyout that's displayed by the CameraCaptureUI API, and shows how the C# version of the UWP device app for camera sample replaces the default flyout with a custom flyout. Další informace o aplikacích zařízení UWP obecně najdete v tématu Meet UWP device apps.

Note

In Windows 8.1, the built-in camera app does not display a More options button and therefore can't display a UWP device app to show more camera options. However, the CameraCaptureUI class, that's available to all UWP apps, does have a More options button and can display UWP device apps from it.

Verze aplikace zařízení UWP pro kameru ukázku v jazyce C# používá stránku DeviceAppPage.xaml k předvedení uživatelského rozhraní vlastního vyjížděcího panelu pro další možnosti fotoaparátu. Ukázka také používá efekty kamery s využitím ovladače kamery MFT (transformace základu médií). Další informace o tom naleznete v tématu Vytvoření ovladače fotoaparátu MFT.

Note

Příklady kódu uvedené v tomto tématu jsou založené na C# verzi aplikace zařízení UWP ukázky pro kameru. Tato ukázka je dostupná také v JavaScriptu a C++. Stáhněte si ukázky a podívejte se na nejnovější verze kódu.

Další možnosti pro kamery

The more camera options experience is the functionality that a UWP device app provides when another app, a UWP app, captures or previews video from the camera by using the CameraCaptureUI API. It is accessible through the More options link in the Camera options window. Není to celá obrazovka, ale zobrazuje se v informačním rámečku, což je ovládací prvek pro zobrazení jednoduchého kontextového uživatelského rozhraní, které se zavře, když uživatel klikne nebo klepne mimo něj.

Toto prostředí se dá použít ke zvýraznění různých funkcí fotoaparátu, jako je například možnost použít vlastní video efekty.

Pokud není aplikace pro zařízení s UPW nainstalovaná pro kameru, windows nabízí výchozí možnosti pro další možnosti fotoaparátu. Pokud Systém Windows zjistí, že je aplikace zařízení pro UPW nainstalovaná pro vaši kameru a že se aplikace přihlásila k rozšíření windows.cameraSettings, nahradí vaše aplikace výchozí prostředí poskytované systémem Windows.

Vyvolání informačního rámečku pro další možnosti fotoaparátu:

  1. Open a UWP app that uses the CameraCaptureUI API (the CameraCaptureUI sample, for example)

  2. Tap the Options button in the UI

  3. This opens a Camera options flyout that shows basic options for setting resolution and video stabilization

  4. On the Camera options flyout, tap More options

  5. The More options flyout opens

    • The default flyout appears when no UWP device app for the camera is installed

    • A custom flyout appears when a UWP device app for the camera is installed

Obrázky vedle sebe zobrazují výchozí vyskakovací nabídku pro další možnosti fotoaparátu a vlastní vyskakovací nabídku.

Tento obrázek ukazuje výchozí rozbalovací nabídku pro jiné možnosti fotoaparátu vedle příkladu vlastní rozbalovací nabídky.

Prerequisites

Než začnete:

  1. Nastavení vývojového počítače See Getting started for info about downloading the tools and creating a developer account.

  2. Přidružte aplikaci ke Storu. Informace o tom najdete v tématu Vytvoření aplikace zařízení pro UPW.

  3. Vytvořte metadata zařízení pro tiskárnu, která ji přidruží k aplikaci. Další informace najdete v tématu Vytvoření metadat zařízení.

  4. Sestavte uživatelské rozhraní pro hlavní stránku vaší aplikace. Všechny aplikace zařízení pro UPW je možné spustit na obrazovce Start, kde se zobrazí na celé obrazovce. Pomocí prostředí Start můžete zvýraznit produkty nebo služby způsobem, který odpovídá konkrétnímu brandingu a funkcím vašich zařízení. Typy ovládacích prvků uživatelského rozhraní, které může používat, neexistují žádná zvláštní omezení. Pokud chcete začít s návrhem prostředí na celé obrazovce, přečtěte si principy návrhu Microsoft Storu.

Krok 1: Registrace rozšíření

Aby systém Windows rozpoznal, že aplikace může poskytnout vlastní informační panel pro další možnosti fotoaparátu, musí zaregistrovat rozšíření nastavení fotoaparátu. Toto rozšíření je deklarováno v elementu Extension s atributem Category nastaveným na hodnotu windows.cameraSettings. V ukázkách jazyka C# a C++ je atribut Executable nastaven na DeviceAppForWebcam.exe a atribut EntryPoint je nastaven na DeviceAppForWebcam.App.

You can add the camera settings extension on the Declarations tab of the Manifest Designer in Microsoft Visual Studio. Kód XML manifestu balíčku aplikace můžete také upravit ručně pomocí editoru XML (Text). Right-click the Package.appxmanifest file in Solution Explorer for editing options.

This example shows the camera settings extension in the Extension element, as it appears in the app package manifest file, 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>

Krok 2: Sestavení uživatelského rozhraní

Před vytvořením aplikace byste měli spolupracovat se svými návrháři a marketingovým týmem a navrhovat uživatelské prostředí. Uživatelské prostředí by mělo promítat aspekty brandingu vaší společnosti a pomoci vám vytvořit spojení s uživateli.

Design guidelines

Před návrhem vlastního informačního rámečku je důležité si projít informačního rámečku aplikace pro UPW. Pokyny pomáhají zajistit, aby váš informační panel poskytoval intuitivní prostředí, které je konzistentní s jinými aplikacemi pro UPW.

Na hlavní stránce aplikace mějte na paměti, že Windows 8.1 může na jednom monitoru zobrazit více aplikací v různých velikostech. Další informace o tom, jak se aplikace může elegantně přeformátovat mezi velikostmi obrazovky, velikostmi oken a orientacemi, najdete v následujících pokynech.

Flyout dimensions

Informační panel, který zobrazuje více možností fotoaparátu, je 625 pixelů vysoký a široký 340 pixelů. The area containing the More options text at the top is provided by Windows and is approximately 65 pixels high, leaving 560 pixels for the viewable area of the custom flyout. Vlastní rozbalovací nabídka by neměla překročit šířku 340 pixelů.

rozměry vysouvacího panelu pro další možnosti fotoaparátu.

Note

Pokud je vaše vlastní rozbalovací nabídka vyšší než 560 pixelů na výšku, může uživatel posunout nebo scrollovat pro zobrazení částí rozbalovací nabídky, které se nacházejí mimo zobrazitelnou oblast, nahoře nebo dole.

Suggested effects

  • Color effects. Například stupně šedé, sépiový tón nebo solarizace celého obrázku.

  • Face-tracking effects. Tam, kde je tvář identifikována na obrázku a překryv, jako je klobouk nebo pár brýlí, se přidá nad něj.

  • Scene modes. Jedná se o přednastavené režimy expozice a detailního režimu pro různé podmínky osvětlení.

Suggested settings

  • Vlastní informační panel vaší aplikace zařízení pro UPW může poskytnout přepínač, který povolí nastavení implementovaná hardwarem, jako jsou schémata oprav barev poskytovaná výrobcem.

  • Implementujte základní vlastnosti, které doplňují ostatní nastavení vystavená aplikací pro zařízení UPW. Mnoho zařízení může například vystavit ovládací prvky pro úpravu jasu, kontrastu, blikání, fokusu a expozice, ale zařízení, které implementuje TrueColor k automatické úpravě jasu a kontrastu, nemusí tato nastavení poskytovat.

Restrictions

  • Nepoužívejte vlastní informační nabídku aplikace pro UWP z hlavní aplikace (voláním metody CameraOptionsUI.Show), pokud aplikace nestreamuje nebo nezachytává.

  • Neposkytujte náhled ani jinak nepřebírejte vlastnictví video streamu z vlastního rozbalovacího okna aplikace pro UWP zařízení. Vlastní vyskakovací okno slouží jako partner k jiné aplikaci, která zachycuje video. Aplikace capture má vlastnictví streamu videa. Neměli byste se pokoušet o přístup ke streamu videa pomocí rozhraní API nízké úrovně. To může způsobit neočekávané chování, kdy aplikace capture ztratí přístup ke streamu.

  • Neupravujte rozlišení ve vlastním informačním rámečku.

  • Nepokoušejte se zobrazit automaticky otevíraná okna, oznámení nebo dialogová okna mimo oblast určenou pro vlastní informační panel. Tyto typy dialogových oken nejsou povoleny.

  • Nezahajujte zachytávání zvuku ani videa uvnitř vlastního informačního rámečku. Vlastní rozbalovací nabídka je určená k rozšíření funkčnosti jiné aplikace, která zachycuje video, nikoliv na zahájení samotného záznamu. Kromě toho může zachytávání zvuku nebo videa aktivovat systémové dialogové okno a automaticky otevírané dialogy nejsou povoleny uvnitř vlastního informačního rámečku.

Krok 3: Řešení aktivace

Pokud vaše aplikace deklarovala rozšíření nastavení fotoaparátu, musí implementovat metodu OnActivated pro zpracování události aktivace aplikace. This event is triggered when a UWP app, using the CameraCaptureUI class, calls the CameraOptionsUI.Show method. Aktivace aplikace spočívá v tom, že aplikace může zvolit, která stránka se spustí při spuštění aplikace. Pro aplikace, které deklarovaly rozšíření nastavení fotoaparátu, Windows předá video zařízení v argumentech aktivované události: Windows.ApplicationModel.Activation.IActivatedEventArgs.

A UWP device app can determine that the activation is intended for camera settings (that someone just tapped More options on the Camera options dialog) when the event argument's kind property is equal to Windows.ApplicationModel.Activation.ActivationKind.CameraSettings.

This example shows the activation event handler in the OnActivated method, as it appears in the App.xaml.cs file. The event arguments are then cast as Windows.ApplicationModel.Activation.CameraSettingsActivatedEventArgs and sent to the Initialize method of the custom flyout (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();
    }
}

Krok 4: Řízení nastavení a efektů

When the Initialize method of the custom flyout (DeviceAppPage.xaml.cs) is called, the video device is passed to the flyout through the event arguments. Tyto argumenty zveřejňují vlastnosti pro řízení kamery:

  • The args.VideoDeviceController property provides an object of type Windows.Media.Devices.VideoDeviceController. Tento objekt poskytuje metody pro úpravu standardního nastavení.

  • The args.VideoDeviceExtension property is a pointer to the camera driver MFT. Pokud nejsou vystavena žádná rozhraní MFT ovladače, bude tato vlastnost prázdná. Další informace o ovladači fotoaparátu MFT naleznete v tématu Vytvoření ovladače kamery MFT.

This example shows a portion of the Initialize method, as it appears in the DeviceAppPage.xaml.cs file. Zde se vytvoří ovladač videozařízení (objekt videoDevController) a ovladač kamery MFT (objekt lcWrapper) a panel se naplní aktuálními nastaveními kamery.

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;
    }
    // . . .
    // . . .
    // . . .

The camera driver MFT is demonstrated in the Driver MFT sample. Další informace o ovladači fotoaparátu MFT naleznete v tématu Vytvoření ovladače kamery MFT.

Krok 5: Použití změn

Při provádění změn v ovládacích prvcích na výběrním panelu se událost Změna odpovídajícího ovládacího prvku použije k aplikaci změn na ovladač videozařízení (objekt videoDevController) a ovladač kamerového MFT (objekt lcWrapper).

This example shows the Changed methods that apply changes to the video device controller and the camera driver MFT, as they appear in the DeviceAppPage.xaml.cs file.

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));
}

Testování aplikace

This section describes how to install a UWP device app that provides a custom flyout for More options of a camera, as demonstrated in the UWP device app for camera sample.

Než budete moct otestovat aplikaci zařízení pro UPW, musí být propojená s fotoaparátem pomocí metadat zařízení.

Note

Chcete-li použít průvodce vytvářením metadat zařízení , musíte před dokončením kroků v tomto tématu nainstalovat Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate nebo samostatnou sadu SDK pro Windows 8.1. Při instalaci sady Microsoft Visual Studio Express pro Windows se nainstaluje verze sady SDK, která průvodce neobsahuje.

Následující kroky sestaví aplikaci a nainstalují metadata zařízení.

  1. Povolte testovací podepisování.

    1. Spusťte průvodce vytvářením metadat zařízení z %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 dvojitým kliknutím na DeviceMetadataWizard.exe

    2. From the Tools menu, select Enable Test Signing.

  2. Restartování počítače

  3. Sestavte řešení otevřením souboru řešení (.sln). Stiskněte klávesu F7 nebo přejděte na Sestavení ->Sestavení řešení z horní nabídky po načtení ukázky.

  4. Odpojte a odinstalujte tiskárnu. Tento krok je povinný, aby systém Windows při příštím zjištění zařízení přečetl aktualizovaná metadata zařízení.

  5. Umožňuje upravit a uložit metadata zařízení. Pokud chcete propojit aplikaci zařízení se zařízením, musíte aplikaci zařízení přidružit k zařízení.

    Note

    Pokud jste ještě nevytvořili metadata zařízení, přečtěte si téma Vytvoření metadat zařízení pro aplikaci zařízení pro UWP.

    1. Pokud průvodce vytvářením metadat zařízení ještě není otevřený, spusťte ho z %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 poklikáním na DeviceMetadataWizard.exe.

    2. Klepněte na tlačítko Upravit metadata zařízení. Umožní vám to upravit stávající balíček metadat zařízení.

    3. In the Open dialog box, locate the device metadata package associated with your UWP device app. (It has a devicemetadata-ms file extension.)

    4. Na stránce Zadejte informace o aplikaci pro zařízení UWP zadejte informace o aplikaci Microsoft Store do pole aplikace pro zařízení UWP. Kliknutím na Import souboru manifestu aplikace UPW automaticky zadejte název balíčku, název vydavatelea ID aplikace UPW.

    5. When you're done, click Next until you get to the Finish page.

    6. Na stránce Zkontrolujte balíček metadat zařízení se ujistěte, že jsou všechna nastavení správná, a zaškrtněte zaškrtávací políčko Zkopírovat balíček metadat zařízení do úložiště metadat v místním počítači. Then click Save.

  6. Znovu připojte zařízení, aby systém Windows při připojení zařízení přečetl aktualizovaná metadata zařízení.

    • Pokud máte externí kameru, jednoduše ji připojte.

    • Pokud máte interní kameru, aktualizujte počítač ve složce Zařízení a tiskárny. Pomocí Správce zařízení vyhledejte změny hardwaru. Systém Windows by měl při zjištění zařízení číst aktualizovaná metadata.

Note

Informace o instalaci ovladače fotoaparátu MFT naleznete v části Testování v Vytvoření ovladače fotoaparátu MFT.

Testování ukázek

Pokud chcete otestovat možnosti fotoaparátu, stáhněte si nejprve tyto ukázky:

Pak postupujte podle pokynů pro testování vzorku uvedených na stránce ukázky ovladače MFT .