Sdílet prostřednictvím


Automatické spouštění pomocí AutoPlay

Pomocí AutoPlay můžete nabídnout svou aplikaci jako možnost, když uživatel připojí zařízení ke svému počítači. Toto zahrnuje zařízení, která nevyužívají úložiště, jako je fotoaparát nebo přehrávač médií, nebo zařízení využívající úložiště, jako je USB flash disk, SD karta nebo DVD. Můžete také použít AutoPlay ke nabídnutí aplikace jako možnosti, když uživatelé sdílejí soubory mezi dvěma počítači pomocí přiblížení zařízení (klepnutí).

Poznámka:

Pokud jste výrobce zařízení a chcete přidružit aplikaci zařízení z Microsoft Storu jako obslužnou rutinu automatického přehrávání pro vaše zařízení, můžete tuto aplikaci identifikovat v metadatech zařízení. Další informace najdete v tématu Automatické přehrávání aplikací pro zařízení v Microsoft Storu.

Registrace obsahu automatického přehrávání

Aplikace můžete zaregistrovat jako možnosti automatického přehrávání událostí obsahu. Události automatického přehrávání obsahu jsou vyvolány, když se do počítače vloží zařízení svazku, jako je paměťová karta fotoaparátu, USB flash disk nebo DVD. Tady si ukážeme, jak identifikovat vaši aplikaci jako možnost automatického přehrávání při vložení zařízení hlasitosti z fotoaparátu.

V tomto kurzu jste vytvořili aplikaci, která zobrazuje soubory obrázků nebo je kopíruje do obrázků. Aplikaci jste zaregistrovali pro událost obsahu AutoPlay ShowPicturesOnArrival.

AutoPlay také vyvolává události obsahu pro obsah sdílený mezi počítači pomocí přiblížení a klepnutí. Kroky a kód v této části můžete použít ke zpracování souborů sdílených mezi počítači, které používají bezkontaktní spojení. V následující tabulce jsou uvedeny události obsahu automatického přehrávání, které jsou k dispozici ke sdílení obsahu pomocí bezkontaktní komunikace.

Činnost Událost automatického přehrávání obsahu
Sdílení hudby Přehrávat hudební soubory po příjezdu
Sdílení videí Přehrát video soubory po příjezdu

Pokud jsou soubory sdíleny při využití blízkosti, objekt FileActivatedEventArgs obsahuje ve vlastnosti Files odkaz na kořenovou složku, v níž se nacházejí všechny sdílené soubory.

Krok 1: Vytvoření nového projektu a přidání deklarací automatického přehrávání

  1. Otevřete Microsoft Visual Studio a v nabídce Soubor vyberte Nový projekt. V části Visual C# vyberte v části Windowsprázdnou aplikaci pro UPW (.NET Native). Pojmenujte aplikaci AutoPlayDisplayOrCopyImages a klikněte na OK.
  2. Otevřete soubor Package.appxmanifest a vyberte kartu Schopnosti. Vyberte schopnosti Vyměnitelné úložiště a Knihovny obrázků. Díky tomu má aplikace přístup k vyměnitelným úložným zařízením pro paměť fotoaparátu a přístup k místním obrázkům.
  3. V souboru manifestu vyberte kartu Deklarace. V rozevíracím seznamu Dostupné deklarace vyberte Obsah pro automatické přehrávání a klikněte na Přidat. Vyberte novou položku obsahu automatického přehrávání , která byla přidána do seznamu podporovaných deklarací .
  4. Deklarace automatického přehrávání obsahu identifikuje vaši aplikaci jako možnost, když automatické přehrávání vyvolá událost obsahu. Událost je založená na obsahu datového zařízení, jako je DVD nebo flash disk. Automatické přehrávání zkoumá obsah svazkového zařízení a určuje, která událost obsahu se má spustit. Pokud kořen svazku obsahuje složku DCIM, AVCHD nebo PRIVATE\ACHD, nebo pokud uživatel v Ovládacím panelu automatického přehrávání povolil volbu Zvolte, co dělat s každým typem média a v kořenovém adresáři svazku jsou nalezeny obrázky, pak AutoPlay vyvolá událost ShowPicturesOnArrival. V části Akce spuštění zadejte hodnoty z tabulky 1 pro první akci spuštění.
  5. V části Akce spuštění pro položku Automatické přehrávání obsahu klikněte na Přidat novou akci a přidejte druhou akci spuštění. Zadejte hodnoty v tabulce 2 níže pro druhou spouštěcí akci.
  6. V rozevíracím seznamu Dostupné deklarace vyberte Přidružení typů souborů a klikněte na Přidat. Ve vlastnostech nové Přidružení typů souborů deklaraci nastavte pole zobrazovaný název na Automatické přehrání kopírování nebo zobrazení obrázků a pole Název na image_association1. V části Podporované typy souborů klikněte na Přidat nový. Nastavte pole typ souboru na .jpg. V části Podporované typy souborů nastavte pole typ souboru nového přidružení souboru na .png. U událostí obsahu automatické přehrání vyfiltruje všechny typy souborů, které nejsou výslovně spojeny s vaší aplikací.
  7. Uložte a zavřete soubor manifestu.

tabulka 1

Nastavení Hodnota
Sloveso ukázat
Zobrazovaný název akce Zobrazit obrázky
Událost obsahu Zobrazit obrázky po příchodu

Nastavení Zobrazovaný název akce identifikuje řetězec, který AutoPlay zobrazuje pro vaši aplikaci. Nastavení sloveso identifikuje hodnotu, která se předá vaší aplikaci pro vybranou možnost. Pro událost automatického přehrávání můžete zadat více akcí spuštění a pomocí nastavení Příkaz určit, kterou možnost uživatel pro vaši aplikaci vybral. Můžete zjistit, kterou možnost uživatel vybral, tím, že zkontrolujete vlastnost sloveso argumentů spuštění události předaných vaší aplikaci. Pro nastavení Verb můžete použít libovolnou hodnotu s výjimkou otevřít, které je vyhrazeno.

tabulka 2

Nastavení Hodnota
Sloveso kopíruj
Zobrazovaný název akce Kopírování obrázků do knihovny
Událost obsahu Zobrazit obrázky po příchodu

Krok 2: Přidání uživatelského rozhraní XAML

Otevřete soubor MainPage.xaml a do výchozí části <Grid> přidejte následující kód XAML.

<TextBlock FontSize="18">File List</TextBlock>
<TextBlock x:Name="FilesBlock" HorizontalAlignment="Left" TextWrapping="Wrap"
           VerticalAlignment="Top" Margin="0,20,0,0" Height="280" Width="240" />
<Canvas x:Name="FilesCanvas" HorizontalAlignment="Left" VerticalAlignment="Top"
        Margin="260,20,0,0" Height="280" Width="100"/>

Krok 3: Přidání inicializačního kódu

Kód v tomto kroku kontroluje hodnotu slovesa v atributu Sloveso. Tato hodnota je jedním z argumentů spuštění, které jsou předány aplikaci během události OnFileActivated. Kód pak volá metodu související s možností, kterou uživatel vybral. Při události paměti fotoaparátu předává funkce automatického přehrávání kořenovou složku úložiště fotoaparátu aplikaci. Tuto složku můžete načíst z prvního prvku vlastnosti Files.

Otevřete soubor App.xaml.cs a do třídy App přidejte následující kód.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
    if (args.Verb == "show")
    {
        Frame rootFrame = (Frame)Window.Current.Content;
        MainPage page = (MainPage)rootFrame.Content;

        // Call DisplayImages with root folder from camera storage.
        page.DisplayImages((Windows.Storage.StorageFolder)args.Files[0]);
    }

    if (args.Verb == "copy")
    {
        Frame rootFrame = (Frame)Window.Current.Content;
        MainPage page = (MainPage)rootFrame.Content;

        // Call CopyImages with root folder from camera storage.
        page.CopyImages((Windows.Storage.StorageFolder)args.Files[0]);
    }

    base.OnFileActivated(args);
}

Poznámka:

 Tyto DisplayImages metody a CopyImages metody jsou přidány v následujících krocích.

Krok 4: Přidání kódu pro zobrazení obrázků

Do souboru MainPage.xaml.cs přidejte následující kód do třídy MainPage.

async internal void DisplayImages(Windows.Storage.StorageFolder rootFolder)
{
    // Display images from first folder in root\DCIM.
    var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
    var folderList = await dcimFolder.GetFoldersAsync();
    var cameraFolder = folderList[0];
    var fileList = await cameraFolder.GetFilesAsync();
    for (int i = 0; i < fileList.Count; i++)
    {
        var file = (Windows.Storage.StorageFile)fileList[i];
        WriteMessageText(file.Name + "\n");
        DisplayImage(file, i);
    }
}

async private void DisplayImage(Windows.Storage.IStorageItem file, int index)
{
    try
    {
        var sFile = (Windows.Storage.StorageFile)file;
        Windows.Storage.Streams.IRandomAccessStream imageStream =
            await sFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
        Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap =
            new Windows.UI.Xaml.Media.Imaging.BitmapImage();
        imageBitmap.SetSource(imageStream);
        var element = new Image();
        element.Source = imageBitmap;
        element.Height = 100;
        Thickness margin = new Thickness();
        margin.Top = index * 100;
        element.Margin = margin;
        FilesCanvas.Children.Add(element);
    }
    catch (Exception e)
    {
       WriteMessageText(e.Message + "\n");
    }
}

// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;

private async void WriteMessageText(string message, bool overwrite = false)
{
    await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
        () =>
        {
            if (overwrite)
                FilesBlock.Text = message;
            else
                FilesBlock.Text += message;
        });
}

Krok 5: Přidání kódu pro kopírování obrázků

Do souboru MainPage.xaml.cs přidejte následující kód do třídy MainPage.

async internal void CopyImages(Windows.Storage.StorageFolder rootFolder)
{
    // Copy images from first folder in root\DCIM.
    var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
    var folderList = await dcimFolder.GetFoldersAsync();
    var cameraFolder = folderList[0];
    var fileList = await cameraFolder.GetFilesAsync();

    try
    {
        var folderName = "Images " + DateTime.Now.ToString("yyyy-MM-dd HHmmss");
        Windows.Storage.StorageFolder imageFolder = await
            Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync(folderName);

        foreach (Windows.Storage.IStorageItem file in fileList)
        {
            CopyImage(file, imageFolder);
        }
    }
    catch (Exception e)
    {
        WriteMessageText("Failed to copy images.\n" + e.Message + "\n");
    }
}

async internal void CopyImage(Windows.Storage.IStorageItem file,
                              Windows.Storage.StorageFolder imageFolder)
{
    try
    {
        Windows.Storage.StorageFile sFile = (Windows.Storage.StorageFile)file;
        await sFile.CopyAsync(imageFolder, sFile.Name);
        WriteMessageText(sFile.Name + " copied.\n");
    }
    catch (Exception e)
    {
        WriteMessageText("Failed to copy file.\n" + e.Message + "\n");
    }
}

Krok 6: Sestavení a spuštění aplikace

  1. Stisknutím klávesy F5 sestavte a nasaďte aplikaci (v režimu ladění).
  2. Pokud chcete aplikaci spustit, vložte do počítače paměťovou kartu fotoaparátu nebo jiné úložné zařízení z fotoaparátu. Pak vyberte jednu z možností události obsahu, které jste zadali v souboru package.appxmanifest ze seznamu možností automatického přehrávání. Tento ukázkový kód zobrazuje nebo kopíruje obrázky pouze ve složce DCIM paměťové karty fotoaparátu. Pokud paměťová karta fotoaparátu ukládá obrázky do složky AVCHD nebo PRIVATE\ACHD, budete muset odpovídajícím způsobem aktualizovat kód.

Poznámka:

Pokud nemáte paměťovou kartu fotoaparátu, můžete použít flash disk, pokud má složku s názvem DCIM v kořenovém adresáři a pokud má složka DCIM podsložku obsahující obrázky.

Registrace zařízení s automatickým přehráváním

Aplikace můžete zaregistrovat jako možnosti pro události automatického přehrávání zařízení. Události automatického přehrávání zařízení se vyvolají, když je zařízení připojeno k PC.

Tady si ukážeme, jak identifikovat vaši aplikaci jako možnost automatického přehrávání , když je kamera připojená k počítači. Aplikace se zaregistruje jako obslužná rutina události WPD\ImageSourceAutoPlay. Jedná se o běžnou událost, kterou systém Windows Portable Device (WPD) vyvolá, když fotoaparáty a jiná zobrazovací zařízení oznámí, že jsou ImageSource, pomocí protokolu MTP. Další informace najdete v tématu přenosných zařízení s Windows .

Důležité rozhraní API Windows.Devices.Portable.StorageDevice jsou součástí řady stolních zařízení. Aplikace můžou tato rozhraní API používat jenom na zařízeních s Windows 10 v rodině stolních zařízení, jako jsou počítače.

Krok 1: Vytvoření dalšího nového projektu a přidání deklarací automatického přehrávání

  1. Otevřete Visual Studio a v nabídce Soubor vyberte Nový projekt. V části Visual C# vyberte v části Windowsprázdnou aplikaci pro UPW (.NET Native). Pojmenujte AutoPlayDevice_Camera aplikace a klikněte na OK.
  2. Otevřete soubor Package.appxmanifest a vyberte kartu Možnosti. Vyberte Vyměnitelné úložiště. Tímto aplikace získá přístup k datům na fotoaparátu jako k vyměnitelnému úložnému svazku zařízení.
  3. V souboru manifestu vyberte kartu Deklarace. V rozevíracím seznamu Dostupné deklarace vyberte zařízení automatického přehrávání a klikněte na Přidat. Vyberte novou položku automatického přehrávání zařízení , která byla přidána do seznamu podporovaných deklarací .
  4. Deklarace automatického přehrávání zařízení identifikuje vaši aplikaci jako možnost, když automatické přehrávání vyvolá událost zařízení pro známé události. V části Akce spuštění zadejte hodnoty z následující tabulky pro první akci spuštění.
  5. V rozevíracím seznamu Dostupné deklarace vyberte Přidružení typů souborů a klikněte na Přidat. Ve vlastnostech nové přidružení typů souborů nastavte pole Zobrazovaný název na Zobrazit obrázky z fotoaparátu a pole Název na camera_association1. V části Podporované typy souborů klikněte na Přidat novou (v případě potřeby). Nastavte pole typ souboru na .jpg. V části Podporované typy souborů klikněte znovu na Přidat nový. Nastavte pole Typ souboru nového přidružení souboru na .png. U událostí obsahu automatické přehrání vyfiltruje všechny typy souborů, které nejsou výslovně spojeny s vaší aplikací.
  6. Uložte a zavřete soubor manifestu.
Nastavení Hodnota
Sloveso ukázat
Zobrazovaný název akce Zobrazit obrázky
Událost obsahu WPD\ImageSource

Nastavení Zobrazovaný název akce identifikuje řetězec, který AutoPlay zobrazuje pro vaši aplikaci. Nastavení sloveso identifikuje hodnotu, která se předá vaší aplikaci pro vybranou možnost. Pro událost automatického přehrávání můžete zadat více akcí spuštění a pomocí nastavení Příkaz určit, kterou možnost uživatel pro vaši aplikaci vybral. Můžete zjistit, kterou možnost uživatel vybral, tím, že zkontrolujete vlastnost sloveso argumentů spuštění události předaných vaší aplikaci. Pro nastavení Verb můžete použít libovolnou hodnotu s výjimkou otevřít, které je vyhrazeno. Příklad použití více sloves v jedné aplikaci najdete v tématu Registrace obsahu funkce AutoPlay.

Krok 2: Přidejte odkaz na sestavení pro desktopové rozšíření

Rozhraní API potřebná pro přístup k úložišti na přenosném zařízení s Windows, Windows.Devices.Portable.StorageDevice, jsou součástí řady stolních zařízení. To znamená, že pro použití rozhraní API se vyžaduje speciální sestavení a tato volání budou fungovat jenom na zařízení v rodině stolních zařízení (například v počítači).

  1. V Průzkumníku řešeníklikněte pravým tlačítkem na Odkazy a poté Přidat odkaz....
  2. Rozbalte Univerzální Windows a klikněte na Rozšíření.
  3. Potom vyberte Rozšíření plochy systému Windows pro UWP a klikněte na OK.

Krok 3: Přidání uživatelského rozhraní XAML

Otevřete soubor MainPage.xaml a do výchozí části <Grid> přidejte následující kód XAML.

<StackPanel Orientation="Vertical" Margin="10,0,-10,0">
    <TextBlock FontSize="24">Device Information</TextBlock>
    <StackPanel Orientation="Horizontal">
        <TextBlock x:Name="DeviceInfoTextBlock" FontSize="18" Height="400" Width="400" VerticalAlignment="Top" />
        <ListView x:Name="ImagesList" HorizontalAlignment="Left" Height="400" VerticalAlignment="Top" Width="400">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                        <Image Source="{Binding Path=Source}" />
                        <TextBlock Text="{Binding Path=Name}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" ItemHeight="100" ItemWidth="120"></WrapGrid>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </StackPanel>
</StackPanel>

Krok 4: Přidání aktivačního kódu

Kód v tomto kroku odkazuje na kameru jako StorageDevice předáním ID informací o zařízení fotoaparátu do metody FromId. Informace o ID zařízení kamery se získá nejprve přetypováním argumentů události jako DeviceActivatedEventArgsa poté získáním hodnoty z vlastnosti DeviceInformationId.

Otevřete soubor App.xaml.cs a do třídy App přidejte následující kód.

protected override void OnActivated(IActivatedEventArgs args)
{
   if (args.Kind == ActivationKind.Device)
   {
      Frame rootFrame = null;
      // Ensure that the current page exists and is activated
      if (Window.Current.Content == null)
      {
         rootFrame = new Frame();
         rootFrame.Navigate(typeof(MainPage));
         Window.Current.Content = rootFrame;
      }
      else
      {
         rootFrame = Window.Current.Content as Frame;
      }
      Window.Current.Activate();

      // Make sure the necessary APIs are present on the device
      bool storageDeviceAPIPresent =
      Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Devices.Portable.StorageDevice");

      if (storageDeviceAPIPresent)
      {
         // Reference the current page as type MainPage
         var mPage = rootFrame.Content as MainPage;

         // Cast the activated event args as DeviceActivatedEventArgs and show images
         var deviceArgs = args as DeviceActivatedEventArgs;
         if (deviceArgs != null)
         {
            mPage.ShowImages(Windows.Devices.Portable.StorageDevice.FromId(deviceArgs.DeviceInformationId));
         }
      }
      else
      {
         // Handle case where APIs are not present (when the device is not part of the desktop device family)
      }

   }

   base.OnActivated(args);
}

Poznámka:

Metoda ShowImages je přidána v následujícím kroku.

Krok 5: Přidání kódu pro zobrazení informací o zařízení

Informace o fotoaparátu můžete získat z vlastností třídy StorageDevice. Kód v tomto kroku zobrazí název zařízení a další informace pro uživatele při spuštění aplikace. Kód pak volá Metody GetImageList a GetThumbnail, které přidáte v dalším kroku, aby se zobrazily miniatury obrázků uložených na fotoaparátu.

Do souboru MainPage.xaml.cs přidejte následující kód do třídy MainPage.

private Windows.Storage.StorageFolder rootFolder;

internal async void ShowImages(Windows.Storage.StorageFolder folder)
{
    DeviceInfoTextBlock.Text = "Display Name = " + folder.DisplayName + "\n";
    DeviceInfoTextBlock.Text += "Display Type =  " + folder.DisplayType + "\n";
    DeviceInfoTextBlock.Text += "FolderRelativeId = " + folder.FolderRelativeId + "\n";

    // Reference first folder of the device as the root
    rootFolder = (await folder.GetFoldersAsync())[0];
    var imageList = await GetImageList(rootFolder);

    foreach (Windows.Storage.StorageFile img in imageList)
    {
        ImagesList.Items.Add(await GetThumbnail(img));
    }
}

Poznámka:

Metody GetImageList a GetThumbnail jsou přidány v následujícím kroku.

Krok 6: Přidání kódu pro zobrazení obrázků

Kód v tomto kroku zobrazí miniatury obrázků uložených na fotoaparátu. Kód provádí asynchronní volání na kameru, aby získal náhledový obrázek. Další asynchronní volání se však neprojeví, dokud se předchozí asynchronní volání nedokončí. Tím zajistíte, že se do kamery najednou provede jenom jeden požadavek.

Do souboru MainPage.xaml.cs přidejte následující kód do třídy MainPage.

async private System.Threading.Tasks.Task<List<Windows.Storage.StorageFile>> GetImageList(Windows.Storage.StorageFolder folder)
{
    var result = await folder.GetFilesAsync();
    var subFolders = await folder.GetFoldersAsync();
    foreach (Windows.Storage.StorageFolder f in subFolders)
        result = result.Union(await GetImageList(f)).ToList();

    return (from f in result orderby f.Name select f).ToList();
}

async private System.Threading.Tasks.Task<Image> GetThumbnail(Windows.Storage.StorageFile img)
{
    // Get the thumbnail to display
    var thumbnail = await img.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem,
                                                100,
                                                Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);

    // Create a XAML Image object bind to on the display page
    var result = new Image();
    result.Height = thumbnail.OriginalHeight;
    result.Width = thumbnail.OriginalWidth;
    result.Name = img.Name;
    var imageBitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
    imageBitmap.SetSource(thumbnail);
    result.Source = imageBitmap;

    return result;
}

Krok 7: Sestavení a spuštění aplikace

  1. Stisknutím klávesy F5 sestavte a nasaďte aplikaci (v režimu ladění).
  2. Pokud chcete aplikaci spustit, připojte fotoaparát k počítači. Pak vyberte aplikaci ze seznamu možností automatického přehrávání.

Poznámka:

Ne všechny kamery rozpoznávají událost zařízení automatického přehrávání WPD\ImageSource.

Konfigurace vyměnitelného úložiště

Zařízení pro ukládání dat, jako je paměťová karta nebo USB disk, můžete identifikovat jako zařízení AutoPlay, když je připojeno k počítači. To je užitečné zejména v případě, že chcete přiřadit konkrétní aplikaci pro funkci Automatické přehrávání, abyste ji představili uživateli pro vaše svazkové zařízení.

Zde ukážeme, jak identifikovat vaše zvukové zařízení jako zařízení automatického přehrávání.

Aby bylo vaše svazkové zařízení rozpoznáno jako zařízení automatického přehrávání, přidejte do kořenového adresáře zařízení soubor autorun.inf. Do souboru autorun.inf přidejte klíč CustomEvent do části AutoRun. Když se zařízení úložného svazku připojí k počítači, Automatické přehrávání najde soubor autorun.inf a zachází se svazkem jako se zařízením. AutoPlay vytvoří událost AutoPlay pomocí názvu, který jste zadali pro klíč CustomEvent. Pak můžete vytvořit aplikaci a zaregistrovat ji jako obslužný modul pro tuto událost automatického přehrávání. Když je zařízení připojené k počítači, AutoPlay zobrazí vaši aplikaci jako obslužnou rutinu pro vaše úložné zařízení. Další informace o souborech autorun.inf naleznete v položkách autorun.inf.

Krok 1: Vytvoření souboru autorun.inf

V kořenovém adresáři vašeho zařízení přidejte soubor s názvem autorun.inf. Otevřete soubor autorun.inf a přidejte následující text.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Krok 2: Vytvoření nového projektu a přidání deklarací automatického přehrávání

  1. Otevřete Visual Studio a v nabídce Soubor vyberte Nový projekt. V části Visual C# vyberte v části Windowsprázdnou aplikaci pro UPW (.NET Native). Pojmenujte aplikaci AutoPlayCustomEvent a klikněte na OK.

  2. Otevřete soubor Package.appxmanifest a vyberte kartu Možnosti. Vyberte Vyměnitelné úložiště. Aplikace tak získá přístup k souborům a složkám na vyměnitelných úložných zařízeních.

  3. V souboru manifestu vyberte kartu Deklarace. V rozevíracím seznamu Dostupné deklarace vyberte Obsah pro automatické přehrávání a klikněte na Přidat. Vyberte novou položku obsahu automatického přehrávání , která byla přidána do seznamu podporovaných deklarací .

    Poznámka:

    Alternativně můžete přidat deklaraci zařízení AutoPlay pro vlastní událost AutoPlay.

  4. V části Spustit akce pro deklaraci události Obsah automatického přehrávání zadejte hodnoty v tabulce níže pro první akci spuštění.

  5. V rozevíracím seznamu Dostupné deklarace vyberte Přidružení typů souborů a klikněte na Přidat. Ve vlastnostech nové deklarace asociací typů souborů nastavte pole Zobrazovaný název na Zobrazit soubory .ms a pole Název na ms_association. V části Podporované typy souborů klikněte na Přidat nový. Nastavte pole Typ souboru na .ms. U událostí obsahu vyfiltruje Automatické přehrání všechny typy souborů, které nejsou explicitně přidružené k vaší aplikaci.

  6. Uložte a zavřete soubor manifestu.

Nastavení Hodnota
Sloveso ukázat
Zobrazovaný název akce Zobrazit soubory
Událost obsahu AutomatickéSpuštěníVlastníUdálostiRychlýStart

Hodnota Content Event je text, který jste zadali pro klíč CustomEvent v souboru autorun.inf. Nastavení Zobrazovaný název akce identifikuje řetězec, který AutoPlay zobrazuje pro vaši aplikaci. Nastavení sloveso identifikuje hodnotu, která se předá vaší aplikaci pro vybranou možnost. Pro událost automatického přehrávání můžete zadat více akcí spuštění a pomocí nastavení Příkaz určit, kterou možnost uživatel pro vaši aplikaci vybral. Můžete zjistit, kterou možnost uživatel vybral, tím, že zkontrolujete vlastnost sloveso argumentů spuštění události předaných vaší aplikaci. Pro nastavení Verb můžete použít libovolnou hodnotu s výjimkou otevřít, které je vyhrazeno.

Krok 3: Přidání uživatelského rozhraní XAML

Otevřete soubor MainPage.xaml a do výchozí části <Grid> přidejte následující kód XAML.

<StackPanel Orientation="Vertical">
    <TextBlock FontSize="28" Margin="10,0,800,0">Files</TextBlock>
    <TextBlock x:Name="FilesBlock" FontSize="22" Height="600" Margin="10,0,800,0" />
</StackPanel>

Krok 4: Přidání aktivačního kódu

Kód v tomto kroku volá metodu pro zobrazení složek na kořenové jednotce zařízení svazku. U událostí obsahu automatického přehrávání předá funkce Automatické přehrání kořenovou složku úložného zařízení v argumentech spuštění předaných aplikaci během OnFileActivated události. Tuto složku můžete načíst z prvního prvku vlastnosti Files.

Otevřete soubor App.xaml.cs a do třídy App přidejte následující kód.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
    var rootFrame = Window.Current.Content as Frame;
    var page = rootFrame.Content as MainPage;

    // Call ShowFolders with root folder from device storage.
    page.DisplayFiles(args.Files[0] as Windows.Storage.StorageFolder);

    base.OnFileActivated(args);
}

Poznámka:

Metoda DisplayFiles je přidána v následujícím kroku.

Krok 5: Přidání kódu do zobrazených složek

Do souboru MainPage.xaml.cs přidejte následující kód do třídy MainPage.

internal async void DisplayFiles(Windows.Storage.StorageFolder folder)
{
    foreach (Windows.Storage.StorageFile f in await ReadFiles(folder, ".ms"))
    {
        FilesBlock.Text += "  " + f.Name + "\n";
    }
}

internal async System.Threading.Tasks.Task<IReadOnlyList<Windows.Storage.StorageFile>>
    ReadFiles(Windows.Storage.StorageFolder folder, string fileExtension)
{
    var options = new Windows.Storage.Search.QueryOptions();
    options.FileTypeFilter.Add(fileExtension);
    var query = folder.CreateFileQueryWithOptions(options);
    var files = await query.GetFilesAsync();

    return files;
}

Krok 6: Sestavení a spuštění aplikace

  1. Stisknutím klávesy F5 sestavte a nasaďte aplikaci (v režimu ladění).
  2. Pokud chcete aplikaci spustit, vložte do počítače paměťovou kartu nebo jiné úložné zařízení. Pak vyberte svou aplikaci ze seznamu možností funkce AutoPlay.

Referenční informace k události automatického přehrávání

Systém AutoPlay umožňuje aplikacím registrovat se na různé události týkající se příchodu zařízení a svazků (disků). Pokud se chcete zaregistrovat k událostem automatického přehrávání obsahu, musíte v manifestu balíčku povolit funkci vyměnitelné ho úložiště. Tato tabulka zobrazuje události, pro které se můžete zaregistrovat a kdy jsou vyvolány.

Scénář Událost Popis
Použití fotek na fotoaparátu WPD\ImageSource Vyvolaný pro kamery, které jsou identifikovány jako přenosná zařízení s Windows a nabízejí funkci ImageSource.
Použití hudby ve zvukovém přehrávači WPD\ZvukovýZroj Určeny pro přehrávače médií, které jsou identifikovány jako přenosná zařízení Windows a nabízejí funkci AudioSource.
Použití videí ve videokamerě WPD\VideoSource Spuštěno pro videokamery, které jsou identifikovány jako Windows přenosná zařízení a mají schopnost VideoSource.
Přístup k připojenému flash disku nebo externímu pevnému disku SkladováníPoPříjezdu Vyvolá se při připojení jednotky nebo svazku k počítači. Pokud jednotka nebo svazek obsahuje složku DCIM, AVCHD nebo PRIVATE\ACHD v kořenovém adresáři disku, vyvolá se místo toho událost ShowPicturesOnArrival.
Použití fotek z hromadného úložiště (starší verze) ZobrazitObrázkyPoPříjezdu Vyvolá se, když jednotka nebo svazek obsahuje složku DCIM, AVCHD nebo PRIVATE\ACHD v kořenovém adresáři disku. Pokud uživatel povolil Zvolte, co dělat s každým typem média v Ovládacích panelech automatického přehrávání, AutoPlay zkontroluje objem připojený k počítači a určí typ obsahu na disku. Když jsou nalezeny obrázky, ShowPicturesOnArrival je vyvolána.
Příjem fotek pomocí funkce Sdílení v blízkosti (klepnutím a odesláním) ZobrazitObrázkyPoPříjezdu Když uživatelé posílají obsah pomocí bezkontaktní komunikace (klepnutí a odeslání), automatické přehrávání prozkoumá sdílené soubory a určí typ obsahu. Pokud jsou nalezeny obrázky, ShowPicturesOnArrival je spuštěn.
Použití hudby z masového úložiště (starší verze) Přehrát hudební soubory při příjezdu Pokud uživatel povolil Zvolte, co dělat s jednotlivými typy médií v Ovládacím panelu Automatické přehrávání, Automatické přehrávání zkontroluje disk připojený k počítači a určí typ obsahu na disku. Když jsou nalezeny hudební soubory, PlayMusicFilesOnArrival je aktivován.
Příjem hudby pomocí sdílení v blízkosti (klepnutím odeslat) Přehrát hudební soubory při příjezdu Když uživatelé posílají obsah pomocí bezkontaktní komunikace (klepnutí a odeslání), automatické přehrávání prozkoumá sdílené soubory a určí typ obsahu. Pokud jsou nalezeny hudební soubory, dojde k vyvolání PlayMusicFilesOnArrival.
Použití videí z velkokapacitního úložiště (historické) PřehrátVideoSouboryPoPříjezdu Pokud uživatel povolil Zvolte, co dělat s jednotlivými typy médií v Ovládacím panelu Automatické přehrávání, Automatické přehrávání zkontroluje disk připojený k počítači a určí typ obsahu na disku. Když jsou nalezeny videosoubory, PlayVideoFilesOnArrival je vyvolána.
Příjem videí pomocí sdílení v blízkém dosahu (klepnutím odeslat) PřehrátVideoSouboryPoPříjezdu Když uživatelé posílají obsah pomocí bezkontaktní komunikace (klepnutí a odeslání), automatické přehrávání prozkoumá sdílené soubory a určí typ obsahu. Pokud jsou nalezeny videosoubory, je PlayVideoFilesOnArrival vyvoláno.
Zpracování smíšených sad souborů z připojeného zařízení SmíšenýObsahPoPříjezdu Pokud uživatel povolil Zvolte, co dělat s jednotlivými typy médií v Ovládacím panelu Automatické přehrávání, Automatické přehrávání zkontroluje disk připojený k počítači a určí typ obsahu na disku. Pokud se nenajde žádný konkrétní typ obsahu (například obrázky), MixedContentOnArrival se spustí.
Zpracování smíšených sad souborů pomocí sdílení v blízkosti (klepnout a odeslat) MixedContentOnArrival Když uživatelé posílají obsah pomocí bezkontaktní komunikace (klepnutí a odeslání), automatické přehrávání prozkoumá sdílené soubory a určí typ obsahu. Pokud se nenajde žádný konkrétní typ obsahu (například obrázky), MixedContentOnArrival se spustí.
Zpracování videa z optického média PřehrátDVDFilmPoPříjezdu
Přehrát Blu-ray po příjezdu
PřehrátVideoCDFilmPřiPříjezdu
PřehrátSuperVideoCDFilmPoPříjezdu
Když je disk vložen do optické jednotky, autoplay zkontroluje soubory a určí typ obsahu. Při nalezení videosouborů se vyvolá událost odpovídající typu optického disku.
Zpracování hudby z optického média PlayCDAudioOnArrival
PřehrátDVDZvukPřiPříjezdu
Když je disk vložen do optické jednotky, autoplay zkontroluje soubory a určí typ obsahu. Při nalezení hudebních souborů se vyvolá událost odpovídající typu optického disku.
Přehrávání rozšířených disků PřehrátVylepšenéCDoPříjezdu
PřehrátVylepšenéDVDPoPříjezdu
Když je disk vložen do optické jednotky, autoplay zkontroluje soubory a určí typ obsahu. Když se najde vylepšený disk, vyvolá se událost odpovídající typu optického disku.
Zpracování zapisovatelných optických disků Zpracovat vypalování CD při příjezdu
Zpracování vypalování DVD po příjezdu
Při příjezdu zacházejte s popálením
Když je disk vložen do optické jednotky, autoplay zkontroluje soubory a určí typ obsahu. Při nalezení zapisovatelného disku se vyvolá událost odpovídající typu optického disku.
Zpracování jakéhokoli jiného zařízení nebo připojení svazku NeznámýObsahPřiPříjezdu Vyvolána pro všechny události v případě, že se najde obsah, který neodpovídá žádné události v režimu automatického přehrávání obsahu. Použití této události se nedoporučuje. Aplikaci byste měli zaregistrovat jenom pro konkrétní události automatického přehrávání, které dokáže zpracovat.

Pomocí položky CustomEvent v souboru autorun.inf na svazku můžete určit, že AutoPlay vyvolá vlastní událost obsahu AutoPlay. Další informace naleznete v Autorun.inf položky.

Aplikaci můžete zaregistrovat jako obslužnou rutinu události automatického přehrávání obsahu nebo zařízení přidáním rozšíření do souboru package.appxmanifest pro vaši aplikaci. Pokud používáte Sadu Visual Studio, můžete na kartě deklarací deklarací deklarace obsahu automatického přehrávání přidat obsahu nebo automatického přehrávání. Pokud upravujete soubor package.appxmanifest pro vaši aplikaci přímo, přidejte do manifestu balíčku prvek Extension, který určuje windows.autoPlayContent nebo windows.autoPlayDevice jako Category. Například následující položka v manifestu balíčku přidá rozšíření AutoPlay Content pro registraci aplikace jako obslužné rutiny události ShowPicturesOnArrival.

  <Applications>
    <Application Id="AutoPlayHandlerSample.App">
      <Extensions>
        <Extension Category="windows.autoPlayContent">
          <AutoPlayContent>
            <LaunchAction Verb="show" ActionDisplayName="Show Pictures"
                          ContentEvent="ShowPicturesOnArrival" />
          </AutoPlayContent>
        </Extension>
      </Extensions>
    </Application>
  </Applications>