Partilhar via


Aceder ao conteúdo do Grupo Doméstico

APIs importantes

Aceda ao conteúdo armazenado na pasta Grupo Doméstico do utilizador, incluindo imagens, música e vídeos.

Pré-requisitos

  • Compreender a programação assíncrona para aplicativos da Plataforma Universal do Windows (UWP)

    Você pode aprender a escrever aplicativos assíncronos em C# ou Visual Basic, consulte Chamar APIs assíncronas em C# ou Visual Basic. Para saber como escrever aplicativos assíncronos em C++, consulte Programação assíncrona em C++.

  • Declarações de capacidade do aplicativo

    Para aceder ao conteúdo do Grupo Doméstico, a máquina do usuário deve ter um Grupo Doméstico configurado e a sua aplicação deve ter pelo menos uma das seguintes capacidades: biblioteca de imagens, biblioteca de músicaou biblioteca de vídeos. Quando seu aplicativo acessa a pasta Grupo Doméstico, ele verá apenas as bibliotecas que correspondem aos recursos declarados no manifesto do aplicativo. Para saber mais, consulte Permissões de acesso a arquivos.

    Observação

     O conteúdo da biblioteca de Documentos de um Grupo Doméstico não é visível para a sua aplicação, independentemente das capacidades declaradas no manifesto da sua aplicação e das definições de partilha do utilizador.  

  • Entenda como usar seletores de arquivos

    Normalmente, você usa o seletor de arquivos para acessar arquivos e pastas no Grupo Doméstico. Para saber como usar o seletor de arquivos, consulte Abrir arquivos e pastas com um seletor.

  • Compreender as consultas de ficheiros e pastas

    Você pode usar consultas para enumerar arquivos e pastas no Grupo Doméstico. Para saber mais sobre consultas de arquivos e pastas, consulte Enumerando e consultando arquivos e pastas.

Abrir o seletor de arquivos no Grupo Doméstico

Siga estas etapas para abrir uma instância do seletor de arquivos que permite ao usuário selecionar arquivos e pastas do Grupo Doméstico:

  1. Criar e personalizar o seletor de arquivos

    Use FileOpenPicker para criar o seletor de arquivos e, em seguida, defina o SuggestedStartLocation do seletor como PickerLocationId.HomeGroup. Ou defina outras propriedades que sejam relevantes para seus usuários e seu aplicativo. Para obter diretrizes para ajudá-lo a decidir como personalizar o seletor de arquivos, consulte Diretrizes e lista de verificação para seletores de arquivos

    Este exemplo cria um seletor de arquivos que é aberto no Grupo Doméstico, inclui arquivos de qualquer tipo e exibe os arquivos como imagens em miniatura:

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add("*");
    
  2. Mostrar o seletor de arquivos e processar o arquivo selecionado.

    Depois de criar e personalizar o seletor de arquivos, permita que o usuário escolha um arquivo chamando FileOpenPicker.PickSingleFileAsyncou vários arquivos chamando FileOpenPicker.PickMultipleFilesAsync.

    Este exemplo exibe o seletor de arquivos para permitir que o usuário escolha um arquivo:

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
    
    if (file != null)
    {
        // Do something with the file.
    }
    else
    {
        // No file returned. Handle the error.
    }   
    

Pesquisar arquivos no Grupo Doméstico

Esta seção mostra como localizar itens do Grupo Doméstico que correspondem a um termo de consulta fornecido pelo usuário.

  1. Obter o termo de consulta do usuário.

    Aqui recebemos um termo de consulta que o utilizador inseriu numa caixa de texto do controlo chamado searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Defina as opções de consulta e o filtro de pesquisa.

    As opções de consulta determinam como os resultados da pesquisa são classificados, enquanto o filtro de pesquisa determina quais itens são incluídos nos resultados da pesquisa.

    Este exemplo define opções de consulta que classificam os resultados da pesquisa por relevância e, em seguida, a data de modificação. O filtro de pesquisa é o termo de consulta que o usuário inseriu na etapa anterior:

    Windows.Storage.Search.QueryOptions queryOptions =
            new Windows.Storage.Search.QueryOptions
                (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
    queryOptions.UserSearchFilter = queryTerm.Text;
    Windows.Storage.Search.StorageFileQueryResult queryResults =
            Windows.Storage.KnownFolders.HomeGroup.CreateFileQueryWithOptions(queryOptions);    
    
  3. Execute a consulta e processe os resultados.

    O exemplo a seguir executa a consulta de pesquisa no Grupo Doméstico e salva os nomes de todos os arquivos correspondentes como uma lista de cadeias de caracteres.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
        await queryResults.GetFilesAsync();
    
    if (files.Count > 0)
    {
        outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
        foreach (Windows.Storage.StorageFile file in files)
        {
            outputString += file.Name + "\n";
        }
    }    
    

Pesquisar arquivos compartilhados de um usuário específico no Grupo Doméstico

Esta seção mostra como localizar arquivos do Grupo Doméstico que são compartilhados por um usuário específico.

  1. Obter um conjunto de utilizadores do Grupo Doméstico.

    Cada uma das pastas de primeiro nível no Grupo Doméstico representa um usuário individual do Grupo Doméstico. Portanto, para obter a coleção de utilizadores do HomeGroup, chame GetFoldersAsync para recuperar as pastas de nível superior do HomeGroup.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Localize a pasta do usuário de destino e crie uma consulta de arquivo com escopo para a pasta desse usuário.

    O exemplo a seguir itera pelas pastas recuperadas para localizar a pasta do usuário de destino. Em seguida, ele define as opções de consulta para localizar todos os arquivos na pasta, classificados primeiro por relevância e, em seguida, pela data de modificação. O exemplo cria uma cadeia de caracteres que relata o número de arquivos encontrados, juntamente com os nomes dos arquivos.

    bool userFound = false;
    foreach (Windows.Storage.StorageFolder folder in hgFolders)
    {
        if (folder.DisplayName == targetUserName)
        {
            // Found the target user's folder, now find all files in the folder.
            userFound = true;
            Windows.Storage.Search.QueryOptions queryOptions =
                new Windows.Storage.Search.QueryOptions
                    (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
            queryOptions.UserSearchFilter = "*";
            Windows.Storage.Search.StorageFileQueryResult queryResults =
                folder.CreateFileQueryWithOptions(queryOptions);
            System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
                await queryResults.GetFilesAsync();
    
            if (files.Count > 0)
            {
                string outputString = "Searched for files belonging to " + targetUserName + "'\n";
                outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
                foreach (Windows.Storage.StorageFile file in files)
                {
                    outputString += file.Name + "\n";
                }
            }
        }
    }    
    

Transmitir vídeo a partir do Grupo Doméstico

Siga estas etapas para transmitir conteúdo de vídeo do Grupo Doméstico:

  1. Inclua um MediaElement em seu aplicativo.

    Um MediaElement permite reproduzir conteúdo de áudio e vídeo em seu aplicativo. Para obter mais informações sobre reprodução de áudio e vídeo, consulte Criar controlos personalizados de transporte e Áudio, vídeo e câmera.

    <Grid x:Name="Output" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="1">
        <MediaElement x:Name="VideoBox" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0" Width="400" Height="300"/>
    </Grid>    
    
  2. Abra um seletor de arquivos no Grupo Doméstico e aplique um filtro que inclua arquivos de vídeo nos formatos suportados pelo seu aplicativo.

    Este exemplo inclui arquivos .mp4 e .wmv no seletor de abertura de arquivos.

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add(".mp4");
    picker.FileTypeFilter.Add(".wmv");
    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();   
    
  3. Abra a seleção de arquivos do usuário para acesso de leitura, defina o fluxo de arquivos como a origem doMediaElemente, em seguida, reproduza o arquivo.

    if (file != null)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        VideoBox.SetSource(stream, file.ContentType);
        VideoBox.Stop();
        VideoBox.Play();
    }
    else
    {
        // No file selected. Handle the error here.
    }