Iniciando automaticamente com a Reprodução Automática

Você pode usar a Reprodução Automática para fornecer seu aplicativo como uma opção quando um usuário conecta um dispositivo ao computador. Isso inclui dispositivos sem volume, como uma câmera ou um player de mídia, ou dispositivos com volume, como pen drives, cartões de memória ou DVDs. Você também pode usar a Reprodução Automática para oferecer seu aplicativo como uma opção quando os usuários compartilham arquivos entre dois PCs usando a proximidade (toque).

Observação

Se você for um fabricante de dispositivo e quiser associar seu aplicativo de dispositivo da Microsoft Store como um manipulador de Reprodução Automática para seu dispositivo, poderá identificar esse aplicativo nos metadados do dispositivo. Para obter mais informações, consulte Reprodução Automática para aplicativos de dispositivos da Microsoft Store.

Registrar-se para o conteúdo da Reprodução Automática

Você pode registrar aplicativos como opções para eventos de conteúdo da Reprodução Automática. Eventos de conteúdo da Reprodução Automática surgem quando um dispositivo de volume, como um cartão de memória de câmera, um pen drive ou um DVD, for inserido no PC. Aqui mostramos como identificar seu aplicativo como uma opção de Reprodução Automática quando um dispositivo de volume de uma câmera é inserido.

Neste tutorial, você criou um aplicativo que exibe arquivos de imagem ou os copia para Imagens. Você registrou o aplicativo para o evento de conteúdo ShowPicturesOnArrival da Reprodução Automática.

A Reprodução Automática também gera eventos de conteúdo para conteúdo compartilhado entre PCs usando proximidade (toque). Você pode usar as etapas e o código nesta seção para manipular arquivos compartilhados entre PCs que usam proximidade. A tabela a seguir lista os eventos de conteúdo da Reprodução Automática que estão disponíveis para compartilhar conteúdo usando proximidade.

Ação Evento de conteúdo de Reprodução Automática
Compartilhar música PlayMusicFilesOnArrival
Compartilhar vídeos PlayVideoFilesOnArrival

Quando os arquivos são compartilhados usando proximidade, a propriedade Files do objeto FileActivatedEventArgs contém uma referência a uma pasta raiz que contém todos os arquivos compartilhados.

Etapa 1: Criar um novo projeto e adicionar declarações de Reprodução Automática

  1. Abra o Microsoft Visual Studio e selecione Novo Projeto no menu Arquivo. Na seção Visual C#, em Windows, selecione Aplicativo em branco (universais do Windows). Nomeie o aplicativo AutoPlayDisplayOrCopyImages e clique em OK.
  2. Abra o arquivo Package.appxmanifest e selecione a guia Recursos. Selecione os recursos Armazenamento Removível e Biblioteca de Imagens. Isso dá ao aplicativo acesso a dispositivos de armazenamento removíveis para a memória da câmera e acesso a imagens locais.
  3. No arquivo de manifesto, selecione a guia Declarações. Na lista suspensa Declarações Disponíveis, selecione Conteúdo de Reprodução Automática e clique em Adicionar. Selecione o novo item de Conteúdo de Reprodução Automática que foi adicionado à lista Declarações Compatíveis.
  4. Uma declaração de Conteúdo de Reprodução Automática identifica seu aplicativo como uma opção quando a Reprodução Automática gera um evento de conteúdo. O evento é baseado no conteúdo de um dispositivo de volume, como um DVD ou um pen drive. A Reprodução Automática examina o conteúdo do dispositivo de volume e determina qual evento de conteúdo deve ser gerado. Se a raiz do volume contiver uma pasta DCIM, AVCHD ou PRIVATE\ACHD, ou se um usuário tiver habilitado Escolher o que fazer com cada tipo de mídia no Painel de Controle de Reprodução Automática, e as imagens forem encontradas na raiz do volume, a Reprodução Automática gerará o evento ShowPicturesOnArrival. Na seção Ações de Inicialização, insira os valores da Tabela 1 abaixo para a primeira ação de inicialização.
  5. Na seção Ações de Inicialização do item Conteúdo de Reprodução Automática, clique em Adicionar Novo para adicionar uma segunda ação de inicialização. Insira os valores na Tabela 2 abaixo para a segunda ação de inicialização.
  6. Na lista suspensa Declarações Disponíveis, selecione Associações de Tipo de Arquivo e clique em Adicionar. Nas Propriedades da nova declaração de Associações de Tipo de Arquivo, defina o campo Nome de Exibição como Cópia de Reprodução Automática ou Mostrar Imagens e o campo Nome como image_association1. Na seção Tipos de Arquivo Suportados, clique em Adicionar Novo. Defina o campo Tipo de Arquivo como .jpg. Na seção Tipos de Arquivo com Suporte, defina o campo Tipo de Arquivo da nova associação de arquivo como .png. Para eventos de conteúdo, a Reprodução Automática filtra todos os tipos de arquivo que não estão explicitamente associados ao seu aplicativo.
  7. Salve e feche o arquivo de manifesto.

Tabela 1

Configuração Valor
Verbo show
Nome de exibição da ação Mostrar imagens
Evento de conteúdo ShowPicturesOnArrival

A configuração Nome de Exibição da Ação identifica a cadeia de caracteres que a Reprodução Automática exibe para seu aplicativo. A configuração Verbo identifica um valor que é passado ao seu aplicativo para a opção selecionada. Você pode especificar várias ações de inicialização para um evento de Reprodução Automática e usar a configuração Verbo para determinar qual opção um usuário selecionou para seu aplicativo. Você pode descobrir a opção selecionada pelo usuário verificando a propriedade verb dos argumentos do evento de inicialização passados para seu aplicativo. Também pode usar qualquer valor para a configuração Verbo, exceto open que está reservado.

Tabela 2

Configuração Valor
Verbo copy
Nome de exibição da ação Copiar imagens para a biblioteca
Evento de conteúdo ShowPicturesOnArrival

Etapa 2: Adicionar a interface do usuário XAML

Abra o arquivo MainPage.xaml e adicione o XAML a seguir à seção <Grade> padrão.

<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"/>

Etapa 3: Adicionar código de inicialização

O código nesta etapa verifica o valor do verbo na propriedade Verb, que é um dos argumentos de inicialização passados para o aplicativo durante o evento OnFileActivated. Em seguida, o código chama um método relacionado à opção que o usuário selecionou. Para o evento de memória da câmera, a Reprodução Automática passa a pasta raiz do armazenamento da câmera para o aplicativo. Você pode recuperar essa pasta do primeiro elemento da propriedade Files.

Abra o arquivo App.xaml.cs e adicione o código a seguir à classe Aplicativo.

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

Observação Os métodos DisplayImages e CopyImages são adicionados nas etapas a seguir.

Etapa 4: Adicionar código para exibir imagens

No arquivo MainPage.xaml.cs, adicione o seguinte código à classe 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;
        });
}

Etapa 5: Adicionar código para copiar imagens

No arquivo MainPage.xaml.cs, adicione o seguinte código à classe 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");
    }
}

Etapa 6: Compilar e executar o aplicativo

  1. Pressione F5 para compilar e implantar o aplicativo (no modo de depuração).
  2. Para executar o aplicativo, insira um cartão de memória da câmera ou outro dispositivo de armazenamento de uma câmera no PC. Em seguida, selecione uma das opções de evento de conteúdo especificadas no arquivo package.appxmanifest da lista de opções de Reprodução Automática. Esse código de exemplo exibe ou copia apenas imagens na pasta DCIM de um cartão de memória da câmera. Se o cartão de memória da câmera armazenar imagens em uma pasta AVCHD ou PRIVATE\ACHD, você precisará atualizar o código adequadamente.

Observação

Se você não tiver um cartão de memória da câmera, poderá usar uma unidade flash se ela tiver uma pasta chamada DCIM na raiz e se a pasta DCIM tiver uma subpasta que contenha imagens.

Registrar-se para um dispositivo de Reprodução Automática

Você pode registrar aplicativos como opções para eventos de dispositivo da Reprodução Automática. Eventos de dispositivo de Reprodução Automática são gerados quando um dispositivo é conectado a um PC.

Aqui mostramos como identificar seu aplicativo como uma opção de Reprodução Automática quando uma câmera está conectada a um PC. O aplicativo se registra como um manipulador para o evento WPD\ImageSourceAutoPlay. Esse é um evento comum que o sistema WPD (Dispositivo Portátil do Windows) gera quando câmeras e outros dispositivos de geração de imagens notificam que eles são um ImageSource usando MTP. Para obter mais informações, consulte Dispositivos Portáteis do Windows.

Importante As APIs Windows.Devices.Portable.StorageDevice fazem parte da família de dispositivos de desktop. Os aplicativos podem usar essas APIs apenas em dispositivos com Windows 10 da família de dispositivos de desktop, como PCs.

Etapa 1: Criar outro novo projeto e adicionar declarações de Reprodução Automática

  1. Abra o Visual Studio e selecione Novo Projeto no menu Arquivo. Na seção Visual C#, em Windows, selecione Aplicativo em branco (universais do Windows). Nomeie o aplicativo como AutoPlayDevice_Camera e clique em OK.
  2. Abra o arquivo Package.appxmanifest e selecione a guia Recursos. Selecione o recurso Armazenamento Removível. Isso dá ao aplicativo acesso aos dados na câmera como um dispositivo de volume de armazenamento removível.
  3. No arquivo de manifesto, selecione a guia Declarações. Na lista suspensa Declarações Disponíveis, selecione Dispositivo de Reprodução Automática e clique em Adicionar. Selecione o novo item de Dispositivo de Reprodução Automática que foi adicionado à lista Declarações Compatíveis.
  4. Uma declaração de Dispositivo de Reprodução Automática identifica seu aplicativo como uma opção quando a Reprodução Automática gera um evento de dispositivo para eventos conhecidos. Na seção Ações de Inicialização, insira os valores na tabela abaixo para a primeira ação de inicialização.
  5. Na lista suspensa Declarações Disponíveis, selecione Associações de Tipo de Arquivo e clique em Adicionar. Nas Propriedades da nova declaração de Associações de Tipo de Arquivo, defina o campo Nome de Exibição como Mostrar Imagens da Câmera e o campo Nome como camera_association1. Na seção Tipos de Arquivo Suportados, clique em Adicionar Novo (se necessário). Defina o campo Tipo de Arquivo como .jpg. Na seção Tipos de Arquivo Suportados, clique em Adicionar Novo novamente. Defina o campo Tipo de Arquivo da nova associação de arquivo como .png. Para eventos de conteúdo, a Reprodução Automática filtra todos os tipos de arquivo que não estão explicitamente associados ao seu aplicativo.
  6. Salve e feche o arquivo de manifesto.
Configuração Valor
Verbo show
Nome de exibição da ação Mostrar imagens
Evento de conteúdo WPD\ImageSource

A configuração Nome de Exibição da Ação identifica a cadeia de caracteres que a Reprodução Automática exibe para seu aplicativo. A configuração Verbo identifica um valor que é passado ao seu aplicativo para a opção selecionada. Você pode especificar várias ações de inicialização para um evento de Reprodução Automática e usar a configuração Verbo para determinar qual opção um usuário selecionou para seu aplicativo. Você pode descobrir a opção selecionada pelo usuário verificando a propriedade verb dos argumentos do evento de inicialização passados para seu aplicativo. Também pode usar qualquer valor para a configuração Verbo, exceto open que está reservado. Para obter um exemplo de uso de vários verbos em um único aplicativo, consulte Registrar-se para conteúdo de Reprodução Automática.

Etapa 2: Adicionar referência de assembly para as extensões de desktop

As APIs necessárias para acessar o armazenamento em um Dispositivo Portátil do Windows, Windows.Devices.Portable.StorageDevice, fazem parte da família de dispositivos de desktop. Isso significa que um assembly especial é necessário para usar as APIs, e essas chamadas só funcionarão em um dispositivo da família de dispositivos de desktop (como um PC).

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência....
  2. Expanda Universal Windows e clique em Extensões.
  3. Em seguida, selecione Extensões de Desktop do Windows para UWP e clique em OK.

Etapa 3: Adicionar a interface do usuário XAML

Abra o arquivo MainPage.xaml e adicione o XAML a seguir à seção <Grade> padrão.

<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>

Etapa 4: Adicionar código de ativação

O código nesta etapa faz referência à câmera como um StorageDevice passando a ID de informações do dispositivo da câmera para o método FromId. A ID de informações do dispositivo da câmera é obtida primeiro convertendo os argumentos de evento como DeviceActivatedEventArgs e, em seguida, obtendo o valor da propriedade DeviceInformationId.

Abra o arquivo App.xaml.cs e adicione o código a seguir à classe Aplicativo.

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

Observação

O método ShowImages é adicionado na etapa a seguir.

Etapa 5: Adicionar código para exibir informações do dispositivo

Você pode obter informações sobre a câmera nas propriedades da classe StorageDevice. O código nesta etapa exibe o nome do dispositivo e outras informações para o usuário quando o aplicativo é executado. Em seguida, o código chama os métodos GetImageList e GetThumbnail, que você adicionará na próxima etapa, para exibir miniaturas das imagens armazenadas na câmera

No arquivo MainPage.xaml.cs, adicione o seguinte código à classe 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));
    }
}

Observação

Os métodos GetImageList e GetThumbnail são adicionados na etapa a seguir.

Etapa 6: Adicionar código para exibir imagens

O código nesta etapa exibe miniaturas das imagens armazenadas na câmera. O código faz chamadas assíncronas para a câmera para obter a imagem em miniatura. No entanto, a próxima chamada assíncrona não ocorre até que a chamada assíncrona anterior seja concluída. Isso garante que apenas uma solicitação seja feita à câmera por vez.

No arquivo MainPage.xaml.cs, adicione o seguinte código à classe 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;
}

Etapa 7: Compilar e executar o aplicativo

  1. Pressione F5 para compilar e implantar o aplicativo (no modo de depuração).
  2. Para executar seu aplicativo, conecte uma câmera à sua máquina. Em seguida, selecione o aplicativo da lista de opções de Reprodução Automática.

Observação

Nem todas as câmeras anunciam para o evento de dispositivo de Reprodução Automática WPD\ImageSource.

Configurar armazenamento removível

Você pode identificar um dispositivo de volume, como um cartão de memória ou pen drive, como um dispositivo de Reprodução Automática quando o dispositivo de volume estiver conectado a um PC. Isso é especialmente útil quando você deseja associar um aplicativo específico para Reprodução Automática para apresentar ao usuário para seu dispositivo de volume.

Aqui mostramos como identificar seu dispositivo de volume como um dispositivo de Reprodução Automática.

Para identificar o dispositivo de volume como um dispositivo de Reprodução Automática, adicione um arquivo autorun.inf à unidade raiz do dispositivo. No arquivo autorun.inf, adicione uma chave CustomEvent à seção AutoRun. Quando o dispositivo de volume se conecta a um PC, a Reprodução Automática localiza o arquivo autorun.inf e trata o volume como um dispositivo. A Reprodução Automática criará um evento de Reprodução Automática usando o nome fornecido para a chave CustomEvent. Em seguida, você pode criar um aplicativo e registrá-lo como um manipulador para esse evento de Reprodução Automática. Quando o dispositivo estiver conectado ao PC, a Reprodução Automática mostrará seu aplicativo como um manipulador para seu dispositivo de volume. Para obter mais informações sobre arquivos autorun.inf, consulte entradas autorun.inf.

Etapa 1: Criar um arquivo autorun.inf

Na unidade raiz do dispositivo de volume, adicione um arquivo chamado autorun.inf. Abra o arquivo autorun.inf e adicione o seguinte texto.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Etapa 2: Criar um novo projeto e adicionar declarações de Reprodução Automática

  1. Abra o Visual Studio e selecione Novo Projeto no menu Arquivo. Na seção Visual C#, em Windows, selecione Aplicativo em branco (universais do Windows). Nomeie o aplicativo como AutoPlayCustomEvent e clique em OK.
  2. Abra o arquivo Package.appxmanifest e selecione a guia Recursos. Selecione o recurso Armazenamento Removível. Isso dá ao aplicativo acesso aos arquivos e pastas em dispositivos de armazenamento removíveis.
  3. No arquivo de manifesto, selecione a guia Declarações. Na lista suspensa Declarações Disponíveis, selecione Conteúdo de Reprodução Automática e clique em Adicionar. Selecione o novo item de Conteúdo de Reprodução Automática que foi adicionado à lista Declarações Compatíveis.

Observação

Como alternativa, você também pode optar por adicionar uma declaração de Dispositivo de Reprodução Automática para seu evento de Reprodução Automática personalizado.

  1. Na seção Ações de Inicialização para sua declaração de evento de Conteúdo de Reprodução Automática, insira os valores na tabela abaixo para a primeira ação de inicialização.
  2. Na lista suspensa Declarações Disponíveis, selecione Associações de Tipo de Arquivo e clique em Adicionar. Nas Propriedades da nova declaração de Associações de Tipo de Arquivo, defina o campo Nome de Exibição como Mostrar Arquivos .ms e o campo Nome como ms_association. Na seção Tipos de Arquivo Suportados, clique em Adicionar Novo. Defina o campo Tipo de Arquivo como .ms. Para eventos de conteúdo, a Reprodução Automática filtra todos os tipos de arquivo que não estão explicitamente associados ao seu aplicativo.
  3. Salve e feche o arquivo de manifesto.
Configuração Valor
Verbo show
Nome de exibição da ação Mostrar arquivos
Evento de conteúdo AutoPlayCustomEventQuickstart

O valor Content Event é o texto que você forneceu para a chave CustomEvent no arquivo autorun.inf. A configuração Nome de Exibição da Ação identifica a cadeia de caracteres que a Reprodução Automática exibe para seu aplicativo. A configuração Verbo identifica um valor que é passado ao seu aplicativo para a opção selecionada. Você pode especificar várias ações de inicialização para um evento de Reprodução Automática e usar a configuração Verbo para determinar qual opção um usuário selecionou para seu aplicativo. Você pode descobrir a opção selecionada pelo usuário verificando a propriedade verb dos argumentos do evento de inicialização passados para seu aplicativo. Também pode usar qualquer valor para a configuração Verbo, exceto open que está reservado.

Etapa 3: Adicionar a interface do usuário XAML

Abra o arquivo MainPage.xaml e adicione o XAML a seguir à seção <Grade> padrão.

<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>

Etapa 4: Adicionar o código de ativação

O código nesta etapa chama um método para exibir as pastas na unidade raiz do dispositivo de volume. Para os eventos de conteúdo de Reprodução Automática, a Reprodução Automática passa a pasta raiz do dispositivo de armazenamento nos argumentos de inicialização passados para o aplicativo durante o evento OnFileActivated. Você pode recuperar essa pasta do primeiro elemento da propriedade Files.

Abra o arquivo App.xaml.cs e adicione o código a seguir à classe Aplicativo.

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

Observação

O método DisplayFiles é adicionado na etapa a seguir.

Etapa 5: Adicionar código às pastas de exibição

No arquivo MainPage.xaml.cs, adicione o seguinte código à classe 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;
}

Etapa 6: compile e execute o aplicativo

  1. Pressione F5 para compilar e implantar o aplicativo (no modo de depuração).
  2. Para executar o aplicativo, insira um cartão de memória ou outro dispositivo de armazenamento no PC. Em seguida, selecione seu aplicativo na lista de opções do manipulador de Reprodução Automática.

Referência de evento de Reprodução Automática

O sistema de Reprodução Automática permite que os aplicativos se registrem para uma variedade de eventos de chegada de dispositivo e volume (disco). Para se registrar em eventos de conteúdo de Reprodução Automática, você deve habilitar o recurso Armazenamento Removível no manifesto do pacote. Esta tabela mostra os eventos nos quais você pode se registrar e quando eles são gerados.

Cenário Evento Descrição
Usar fotos em uma câmera WPD\ImageSource Criado para câmeras identificadas como Dispositivos Portáteis do Windows e que oferecem o recurso ImageSource.
Utilizar música em um reprodutor de áudio WPD\AudioSource Criado para players de mídia identificados como Dispositivos Portáteis do Windows e que oferecem o recurso AudioSource.
Usar vídeos em uma câmera de vídeo WPD\VideoSource Criado para câmeras de vídeo identificadas como Dispositivos Portáteis do Windows e que oferecem o recurso VideoSource.
Acessar uma unidade flash conectada ou um disco rígido externo StorageOnArrival Gerado quando uma unidade ou volume é conectado ao PC. Se a unidade ou volume contiver uma pasta DCIM, AVCHD ou PRIVATE\ACHD na raiz do disco, o evento ShowPicturesOnArrival será gerado.
Usar fotos de armazenamento em massa (legado) ShowPicturesOnArrival Gerado quando uma unidade ou volume contém uma pasta DCIM, AVCHD ou PRIVATE\ACHD na raiz do disco. Se um usuário tiver habilitado Escolher o que fazer com cada tipo de mídia no Painel de Controle de Reprodução Automática, a Reprodução Automática examinará um volume conectado ao PC para determinar o tipo de conteúdo no disco. Quando as imagens são encontradas, ShowPicturesOnArrival é gerado.
Receber fotos com o Compartilhamento de Proximidade (tocar e enviar) ShowPicturesOnArrival Quando os usuários enviarem conteúdo com o uso de proximidade (tocar e enviar), a Reprodução Automática examinará os arquivos compartilhados para determinar o tipo de conteúdo. Se forem encontradas imagens, ShowPicturesOnArrival será gerado.
Usar música do armazenamento em massa (legado) PlayMusicFilesOnArrival Se um usuário tiver habilitado Escolher o que fazer com cada tipo de mídia no Painel de Controle de Reprodução Automática, a Reprodução Automática examinará um volume conectado ao PC para determinar o tipo de conteúdo no disco. Quando arquivos de música são encontrados, PlayMusicFilesOnArrival é gerado.
Receber música com o Compartilhamento de Proximidade (tocar e enviar) PlayMusicFilesOnArrival Quando os usuários enviarem conteúdo com o uso de proximidade (tocar e enviar), a Reprodução Automática examinará os arquivos compartilhados para determinar o tipo de conteúdo. Se forem encontrados arquivos de música, PlayMusicFilesOnArrival será gerado.
Usar vídeos de armazenamento em massa (legado) PlayVideoFilesOnArrival Se um usuário tiver habilitado Escolher o que fazer com cada tipo de mídia no Painel de Controle de Reprodução Automática, a Reprodução Automática examinará um volume conectado ao PC para determinar o tipo de conteúdo no disco. Quando arquivos de vídeo são encontrados, PlayVideoFilesOnArrival é gerado.
Receber vídeos com o Compartilhamento de Proximidade (tocar e enviar) PlayVideoFilesOnArrival Quando os usuários enviarem conteúdo com o uso de proximidade (tocar e enviar), a Reprodução Automática examinará os arquivos compartilhados para determinar o tipo de conteúdo. Se forem encontrados arquivos de vídeo, PlayVideoFilesOnArrival será gerado.
Manipular conjuntos mistos de arquivos de um dispositivo conectado MixedContentOnArrival Se um usuário tiver habilitado Escolher o que fazer com cada tipo de mídia no Painel de Controle de Reprodução Automática, a Reprodução Automática examinará um volume conectado ao PC para determinar o tipo de conteúdo no disco. Se nenhum tipo de conteúdo específico for encontrado (por exemplo, imagens), MixedContentOnArrival será gerado.
Manipular conjuntos mistos de arquivos com o Compartilhamento de Proximidade (tocar e enviar) MixedContentOnArrival Quando os usuários enviarem conteúdo com o uso de proximidade (tocar e enviar), a Reprodução Automática examinará os arquivos compartilhados para determinar o tipo de conteúdo. Se nenhum tipo de conteúdo específico for encontrado (por exemplo, imagens), MixedContentOnArrival será gerado.
Manipular vídeo de mídia óptica PlayDVDMovieOnArrival
PlayBluRayOnArrival
PlayVideoCDMovieOnArrival
PlaySuperVideoCDMovieOnArrival
Quando um disco é inserido na unidade óptica, a Reprodução Automática examina os arquivos para determinar o tipo de conteúdo. Quando arquivos de vídeo são encontrados, o evento correspondente ao tipo de disco óptico é gerado.
Manipular música de mídia óptica PlayCDAudioOnArrival
PlayDVDAudioOnArrival
Quando um disco é inserido na unidade óptica, a Reprodução Automática examina os arquivos para determinar o tipo de conteúdo. Quando arquivos de música são encontrados, o evento correspondente ao tipo de disco óptico é gerado.
Reproduzir discos aprimorados PlayEnhancedCDOnArrival
PlayEnhancedDVDOnArrival
Quando um disco é inserido na unidade óptica, a Reprodução Automática examina os arquivos para determinar o tipo de conteúdo. Quando um disco aprimorado é encontrado, o evento correspondente ao tipo de disco óptico é gerado.
Manipular discos ópticos graváveis HandleCDBurningOnArrival
HandleDVDBurningOnArrival
HandleBDBurningOnArrival
Quando um disco é inserido na unidade óptica, a Reprodução Automática examina os arquivos para determinar o tipo de conteúdo. Quando um disco gravável é encontrado, o evento correspondente ao tipo de disco óptico é gerado.
Manipular qualquer outro dispositivo ou conexão de volume UnknownContentOnArrival Gerado para todos os eventos caso seja encontrado conteúdo que não corresponda a nenhum dos eventos de conteúdo de Reprodução Automática. O uso desse evento não é recomendado. Você só deve registrar seu aplicativo para os eventos específicos de Reprodução Automática que ele pode manipular.

Você pode especificar que a Reprodução Automática gere um evento de Conteúdo de Reprodução Automática personalizado usando a entrada CustomEvent no arquivo autorun.inf para um volume. Para obter mais informações, consulte Entradas de autorun.inf.

Você pode registrar seu aplicativo como um manipulador de eventos de Conteúdo de Reprodução Automática ou Dispositivo de Reprodução Automática adicionando uma extensão ao arquivo package.appxmanifest para seu aplicativo. Se você estiver usando o Visual Studio, poderá adicionar uma declaração de Conteúdo de Reprodução Automática ou Dispositivo de Reprodução Automática na guia Declarações. Se você estiver editando o arquivo package.appxmanifest para seu aplicativo diretamente, adicione um elemento Extension ao manifesto do pacote que especifique windows.autoPlayContent ou windows.autoPlayDevice como a Categoria. Por exemplo, a entrada a seguir no manifesto do pacote adiciona uma extensão de Conteúdo de Reprodução Automática para registrar o aplicativo como um manipulador para o evento 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>