Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Important
Metadane urządzenia są przestarzałe i zostaną usunięte w przyszłej wersji systemu Windows. Aby uzyskać informacje o zastąpieniu tej funkcji, zobacz Driver Package Container Metadata (Metadane kontenera pakietów sterowników).
W systemie Windows 8.1 aplikacje urządzeń platformy UWP umożliwiają producentom urządzeń dostosowanie menu wysuwanego, które pokazuje więcej opcji aparatu w niektórych aplikacjach fotograficznych. 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. Aby dowiedzieć się więcej o aplikacjach urządzeń platformy uniwersalnej systemu Windows, zobacz Poznaj aplikacje urządzeń UWP.
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.
Przykładowa wersja języka C# aplikacji urządzenia platformy UWP dla aparatu korzysta ze strony DeviceAppPage.xaml w celu zademonstrowania interfejsu użytkownika niestandardowego wysuwanego, aby uzyskać więcej opcji aparatu. Przykład stosuje również efekty aparatu za pomocą sterownika kamery MFT (transformacja podstawy multimediów). Aby uzyskać więcej informacji na ten temat, zobacz Tworzenie sterownika aparatu MFT.
Note
Przykłady kodu pokazane w tym temacie są oparte na wersji języka C# aplikacji urządzenia platformy uniwersalnej systemu Windows dla przykładu aparatu fotograficznego. Ten przykład jest również dostępny w językach JavaScript i C++. Pobierz przykłady, aby wyświetlić najnowsze wersje kodu.
Więcej opcji dla aparatów fotograficznych
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. Nie jest on pełnoekranowy, ale jest wyświetlany w oknie wysuwanym, który jest kontrolką służącą do wyświetlania lekkiego, kontekstowego interfejsu użytkownika, który jest odrzucany, gdy użytkownik kliknie lub naciśnie poza nim.
To środowisko może służyć do wyróżniania zróżnicowanych funkcji aparatu, takich jak możliwość stosowania niestandardowych efektów wideo.
Jeśli aplikacja urządzenia UWP nie jest zainstalowana dla kamery, system Windows zapewnia domyślne środowisko z większą ilością opcji aparatu. Jeśli system Windows wykryje, że aplikacja urządzenia platformy UWP jest zainstalowana dla aparatu i że aplikacja zdecydowała się na windows.cameraSettings rozszerzenie, Twoja aplikacja zastępuje domyślne środowisko udostępniane przez system Windows.
Aby wywołać okno wysuwane z dodatkowymi opcjami aparatu:
Open a UWP app that uses the CameraCaptureUI API (the CameraCaptureUI sample, for example)
Tap the Options button in the UI
This opens a Camera options flyout that shows basic options for setting resolution and video stabilization
On the Camera options flyout, tap More options
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
Ten obraz przedstawia domyślne okno wysuwane dla więcej opcji aparatu obok przykładu niestandardowego okna wysuwanego.
Prerequisites
Przed rozpoczęciem pracy:
Skonfiguruj komputer deweloperów. See Getting started for info about downloading the tools and creating a developer account.
Skojarz aplikację ze sklepem. Aby uzyskać informacje na ten temat, zobacz Tworzenie aplikacji urządzenia uniwersalnego systemu Windows.
Utwórz metadane urządzenia dla drukarki, która skojarzy ją z aplikacją. Aby uzyskać więcej informacji, zobacz Tworzenie metadanych urządzenia .
Skompiluj interfejs użytkownika dla strony głównej aplikacji. Wszystkie aplikacje urządzeń platformy UWP można uruchamiać z poziomu ekranu startowego, w którym będą wyświetlane w trybie pełnoekranowym. Użyj środowiska Start, aby wyróżnić produkt lub usługi w sposób zgodny z określonymi znakami i funkcjami urządzeń. Nie ma specjalnych ograniczeń dotyczących typu kontrolek interfejsu użytkownika, których może używać. Aby rozpocząć projektowanie środowiska pełnoekranowego, zobacz Zasady projektowania sklepu Microsoft Store.
Krok 1. Rejestrowanie rozszerzenia
Aby system Windows rozpoznał, że aplikacja może dostarczyć niestandardowe okno wysuwane dla większej liczby opcji aparatu, musi zarejestrować rozszerzenie ustawień aparatu. To rozszerzenie jest zadeklarowane w elemecie Extension z atrybutem Category ustawionym na wartość windows.cameraSettings. W przykładach języka C# i C++ atrybut Executable jest ustawiony na DeviceAppForWebcam.exe , a atrybut EntryPoint jest ustawiony na DeviceAppForWebcam.App.
You can add the camera settings extension on the Declarations tab of the Manifest Designer in Microsoft Visual Studio. Możesz również ręcznie edytować plik XML manifestu pakietu aplikacji przy użyciu edytora 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. Kompilowanie interfejsu użytkownika
Przed utworzeniem aplikacji należy współpracować z projektantami i zespołem marketingowym w celu zaprojektowania środowiska użytkownika. Doświadczenie użytkownika powinno odzwierciedlać aspekty brandingowe Twojej firmy i pomagać w budowaniu relacji z użytkownikami.
Design guidelines
Przed projektowaniem niestandardowego wysuwanego menu, należy zapoznać się z wytycznymi dotyczącymi aplikacji UWP. Wytyczne pomagają zapewnić, że menu wysuwane oferuje intuicyjne doświadczenie użytkownika zgodne z innymi aplikacjami platformy UWP.
Na stronie głównej aplikacji należy pamiętać, że system Windows 8.1 może wyświetlać wiele aplikacji w różnych rozmiarach na jednym monitorze. Zapoznaj się z poniższymi wskazówkami, aby dowiedzieć się więcej na temat sposobu, w jaki aplikacja może swobodnie przepływać między rozmiarami ekranu, rozmiarami okien i orientacjami.
Flyout dimensions
Okno wysuwane, które wyświetla więcej opcji aparatu, ma wysokość 625 pikseli i szerokość 340 pikseli. 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. Niestandardowe okno wysuwane nie powinno przekraczać 340 pikseli szerokości.
Note
Jeśli wysuwane okno ma więcej niż 560 pikseli wysokości, użytkownik może przesuwać lub przewijać, aby wyświetlić części okna, które znajdują się powyżej lub poniżej widocznego obszaru.
Suggested effects
Color effects. Na przykład skala szarości, ton sepii lub solarizowanie całego obrazu.
Face-tracking effects. Kiedy twarz jest rozpoznawana na zdjęciu i nakładana jest na nią nakładka, taka jak kapelusz lub para okularów.
Scene modes. Są to wstępnie ustawione tryby ekspozycji i koncentracji uwagi dla różnych warunków oświetlenia.
Suggested settings
Niestandardowe okno wysuwane aplikacji urządzenia platformy UWP może zapewnić przełącznik umożliwiający włączenie ustawień implementowanych przez sprzęt, takich jak schematy poprawek kolorów dostarczone przez producenta.
Zaimplementuj podstawowe właściwości, które uzupełniają inne ustawienia uwidacznione przez aplikację urządzenia platformy UWP. Na przykład wiele urządzeń może uwidocznić kontrolki dostosowywania jasności, kontrastu, migotania, koncentracji uwagi i ekspozycji, ale urządzenie, które implementuje TrueColor, aby automatycznie dostosować jasność i kontrast, może nie wymagać podania tych ustawień.
Restrictions
Nie otwieraj niestandardowego menu kontekstowego aplikacji urządzenia UWP z aplikacji głównej, wywołując metodę
CameraOptionsUI.Show, gdy aplikacja nie przesyła strumieniowo ani nie przechwytuje.Nie udostępniaj podglądu ani w inny sposób nie zarządzaj strumieniem wideo w okienku podręcznym niestandardowej aplikacji UWP na urządzeniu. Niestandardowe okno wysuwane ma działać jako towarzysz innej aplikacji, która przechwytuje wideo. Aplikacja przechwytująca jest właścicielem strumienia wideo. Nie należy próbować uzyskać dostępu do strumienia wideo przy użyciu interfejsów API niskiego poziomu. Może to spowodować nieoczekiwane zachowanie, w którym aplikacja przechwytywania utraci dostęp do strumienia.
Nie dopasuj rozdzielczości w oknie wysuwanym niestandardowym.
Nie należy próbować wyświetlać wyskakujących okienek, powiadomień ani okien dialogowych poza obszarem przeznaczonym do niestandardowego elementu wysuwanego. Tego typu okna dialogowe nie są dozwolone.
Nie inicjuj przechwytywania audio lub wideo wewnątrz niestandardowego panelu wysuwanego. Niestandardowe okno wysuwane jest przeznaczone do wspierania innej aplikacji, która przechwytuje wideo, zamiast inicjować samo przechwytywanie. Ponadto przechwytywanie dźwięku lub wideo może spowodować wyświetlenie systemowego okna dialogowego, a wyskakujące okna dialogowe nie są dozwolone we własnym oknie wysuwanym.
Krok 3. Obsługa aktywacji
Jeśli aplikacja zadeklarowała rozszerzenie ustawień aparatu, musi zaimplementować metodę OnActivated do obsługi zdarzenia aktywacji aplikacji. This event is triggered when a UWP app, using the CameraCaptureUI class, calls the CameraOptionsUI.Show method. Aktywacja aplikacji jest wtedy, gdy aplikacja może wybrać, która strona zostanie uruchomiona podczas uruchamiania aplikacji. W przypadku aplikacji, które zadeklarowały rozszerzenie ustawień aparatu, system Windows przekazuje urządzenie wideo jako argument zdarzenia Activated: 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. Kontrolowanie ustawień i efektów
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. Te argumenty uwidaczniają właściwości sterujące aparatem:
The args.VideoDeviceController property provides an object of type Windows.Media.Devices.VideoDeviceController. Ten obiekt udostępnia metody dostosowywania ustawień standardowych.
The args.VideoDeviceExtension property is a pointer to the camera driver MFT. Ta właściwość będzie mieć wartość null, jeśli nie zostaną ujawnione żadne interfejsy MFT sterownika. Aby uzyskać więcej informacji na temat MFT sterowników kamer, zobacz Tworzenie sterownika kamery MFT.
This example shows a portion of the Initialize method, as it appears in the DeviceAppPage.xaml.cs file. W tym miejscu zostanie utworzony kontroler urządzenia wideo (obiekt videoDevController) i sterownik aparatu MFT (obiekt lcWrapper), a okno wysuwane zostanie wypełnione bieżącymi ustawieniami aparatu.
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. Aby uzyskać więcej informacji na temat MFT sterowników kamer, zobacz Tworzenie sterownika kamery MFT.
Krok 5. Stosowanie zmian
Po wprowadzeniu zmian w kontrolkach na rozwijanym panelu, zdarzenie Zmiany odpowiedniego elementu sterującego służy do stosowania zmian do kontrolera urządzenia wideo (obiektu videoDevController) i sterownika kamery MFT (obiektu 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));
}
Testowanie aplikacji
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.
Aby można było przetestować aplikację urządzenia platformy UWP, musi być ona połączona z aparatem przy użyciu metadanych urządzenia.
- Aby dodać do niego informacje o aplikacji urządzenia, potrzebna jest kopia pakietu metadanych urządzenia dla drukarki. Jeśli nie masz metadanych urządzenia, możesz je skompilować przy użyciu Kreatora tworzenia metadanych urządzenia zgodnie z opisem w temacie Tworzenie metadanych urządzenia dla aplikacji urządzenia platformy UWP.
Note
Aby użyć Kreatora tworzenia metadanych urządzenia, przed wykonaniem kroków opisanych w tym temacie należy zainstalować program Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate lub autonomiczny zestaw SDK dla systemu Windows 8.1. Zainstalowanie programu Microsoft Visual Studio Express dla systemu Windows powoduje zainstalowanie wersji zestawu SDK, która nie zawiera kreatora.
W poniższych krokach skompiluj aplikację i zainstaluj metadane urządzenia.
Włącz podpisywanie testowe.
Uruchom Kreatora tworzenia metadanych urządzenia z %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, klikając dwukrotnie DeviceMetadataWizard.exe
From the Tools menu, select Enable Test Signing.
Uruchom ponownie komputer
Skompiluj rozwiązanie, otwierając plik rozwiązania (.sln). Naciśnij F7 lub przejdź do Buduj-Kompiluj rozwiązanie> z górnego menu po załadowaniu przykładu.
Odłącz i odinstaluj drukarkę. Ten krok jest wymagany, aby system Windows odczytał zaktualizowane metadane urządzenia przy następnym wykryciu urządzenia.
Edytowanie i zapisywanie metadanych urządzenia. Aby połączyć aplikację urządzenia z urządzeniem, musisz skojarzyć aplikację urządzenia z urządzeniem.
Note
Jeśli metadane urządzenia nie zostały jeszcze utworzone, zobacz Tworzenie metadanych urządzenia dla aplikacji urządzenia platformy UWP.
Jeśli Kreator tworzenia metadanych urządzenia nie jest jeszcze otwarty, uruchom go od %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, klikając dwukrotnie DeviceMetadataWizard.exe.
Kliknij pozycję Edytuj metadane urządzenia. Umożliwi to edytowanie istniejącego pakietu metadanych urządzenia.
In the Open dialog box, locate the device metadata package associated with your UWP device app. (It has a devicemetadata-ms file extension.)
Na stronie Określanie informacji o aplikacji urządzenia UWP wprowadź informacje o aplikacji ze Sklepu Microsoft w polu tekstowym Aplikacja urządzenia platformy UWP. Kliknij pozycję Importuj plik manifestu aplikacji platformy UWP , aby automatycznie wprowadzić nazwę pakietu, nazwę wydawcy i identyfikator aplikacji platformy UWP.
When you're done, click Next until you get to the Finish page.
Na stronie Przeglądanie pakietu metadanych urządzenia upewnij się, że wszystkie ustawienia są poprawne, a następnie zaznacz pole wyboru Kopiuj pakiet metadanych urządzenia do magazynu metadanych na komputerze lokalnym . Then click Save.
Ponownie połącz urządzenie, aby system Windows odczytał zaktualizowane metadane urządzenia po nawiązaniu połączenia z urządzeniem.
Jeśli masz zewnętrzną kamerę, po prostu połącz aparat.
Jeśli masz aparat wewnętrzny, odśwież komputer w folderze Urządzenia i drukarki. Użyj Menedżera urządzeń do skanowania pod kątem zmian sprzętu. System Windows powinien odczytywać zaktualizowane metadane po wykryciu urządzenia.
Note
Aby uzyskać informacje o instalowaniu sterownika aparatu MFT, zobacz sekcję Testowanie w temacie Tworzenie sterownika aparatu MFT.
Testowanie przykładów
Aby przetestować funkcje opcji kamery, najpierw pobierz następujące próbki:
- Aplikacja próbna UWP dla urządzenia z aparatem
- Przykład interfejsu do przechwytywania obrazu kamerą
- Przykład sterownika MFT
Następnie postępuj zgodnie z przykładowymi instrukcjami testowania podanymi na stronie przykładowej Driver MFT .