Acceso a contenido de Grupo HogarAccessing HomeGroup content

API importantesImportant APIs

Obtén acceso al contenido almacenado en la carpeta Grupo Hogar, que incluye imágenes, música y vídeos.Access content stored in the user's HomeGroup folder, including pictures, music, and videos.

Requisitos previosPrerequisites

  • Comprender la programación asincrónica de las aplicaciones para Plataforma universal de Windows (UWP)Understand async programming for Universal Windows Platform (UWP) apps

    Puedes aprender a escribir aplicaciones asincrónicas en C# o Visual Basic. Consulta Llamar a API asincrónicas en C# o Visual Basic.You can learn how to write asynchronous apps in C# or Visual Basic, see Call asynchronous APIs in C# or Visual Basic. Para aprender a escribir aplicaciones asincrónicas en C++, consulta Programación asincrónica en C++.To learn how to write asynchronous apps in C++, see Asynchronous programming in C++.

  • Declaraciones de funcionalidades de la aplicaciónApp capabilty declarations

    Para acceder al contenido del Grupo Hogar, el equipo del usuario debe tener un Grupo Hogar configurado y la aplicación debe contar con al menos una de las siguientes funcionalidades: picturesLibrary, musicLibrary o videosLibrary.To access HomeGroup content, the user's machine must have a HomeGroup set up and your app must have at least one of the following capabilities: picturesLibrary, musicLibrary, or videosLibrary. Cuando la aplicación obtiene acceso a la carpeta Grupo Hogar, podrá ver solamente las bibliotecas que corresponden a las funcionalidades declaradas en el manifiesto de la aplicación.When your app accesses the HomeGroup folder, it will see only the libraries that correspond to the capabilities declared in your app's manifest. Para más información, consulta Permisos de acceso de archivos.To learn more, see File access permissions.

    Nota

     El contenido de la biblioteca de documentos de un Grupo en el Hogar no está visible para su aplicación independientemente de las funcionalidades declaradas en el manifiesto de su aplicación y de la configuración de uso compartido del usuario. Content in the Documents library of a HomeGroup isn't visible to your app regardless of the capabilities declared in your app's manifest and regardless of the user's sharing settings.  

  • Comprender cómo usar los selectores de archivosUnderstand how to use file pickers

    Generalmente, el selector de archivos se usa para tener acceso a los archivos y carpetas del Grupo Hogar.You typically use the file picker to access files and folders in the HomeGroup. Para aprender a usar el selector de archivo, consulta Apertura de archivos y carpetas con un selector.To learn how to use the file picker, see Open files and folders with a picker.

  • Descripción de las consultas de archivos y carpetasUnderstand file and folder queries

    Puedes usar las consultas para enumerar los archivos y carpetas del Grupo Hogar.You can use queries to enumerate files and folders in the HomeGroup. Para más información sobre consultas de archivos y carpetas, consulta Enumeración y consulta de archivos y carpetas.To learn about file and folder queries, see Enumerating and querying files and folders.

Abrir el selector de archivos en el Grupo HogarOpen the file picker at the HomeGroup

Sigue estos pasos para abrir una instancia del selector de archivos que permite al usuario seleccionar los archivos y carpetas del Grupo Hogar:Follow these steps to open an instance of the file picker that lets the user pick files and folders from the HomeGroup:

  1. Crear y personalizar el selector de archivosCreate and customize the file picker

    Usa FileOpenPicker para crear el selector de archivos y después establece la propiedad SuggestedStartLocation del selector en PickerLocationId.HomeGroup.Use FileOpenPicker to create the file picker, and then set the picker's SuggestedStartLocation to PickerLocationId.HomeGroup. O bien, establece otras propiedades que sean relevantes para los usuarios y la aplicación.Or, set other properties that are relevant to your users and your app. Para obtener directrices que te ayuden a decidir cómo personalizar el selector de archivos, consulta Directrices y lista de comprobación para selectores de archivosFor guidelines to help you decide how to customize the file picker, see Guidelines and checklist for file pickers

    En este ejemplo se crea un selector de archivos que se abre en el Grupo Hogar, incluye archivos de cualquier tipo y muestra los archivos como imágenes en miniatura:This example creates a file picker that opens at the HomeGroup, includes files of any type, and displays the files as thumbnail images:

    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 el selector de archivos y procesar el archivo seleccionado.Show the file picker and process the picked file.

    Después de crear y personalizar el selector de archivos, permite que el usuario seleccione un archivo llamando a FileOpenPicker.PickSingleFileAsync, o varios archivos llamando a FileOpenPicker.PickMultipleFilesAsync.After you create and customize the file picker, let the user pick one file by calling FileOpenPicker.PickSingleFileAsync, or multiple files by calling FileOpenPicker.PickMultipleFilesAsync.

    En este ejemplo se muestra el selector de archivos que permite al usuario seleccionar un archivo:This example displays the file picker to let the user pick one file:

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

Buscar archivos en el Grupo HogarSearch the HomeGroup for files

En esta sección se muestra cómo buscar elementos del Grupo Hogar que coinciden con un término de consulta proporcionado por el usuario.This section shows how to find HomeGroup items that match a query term provided by the user.

  1. Obtener el término de consulta del usuario.Get the query term from the user.

    Aquí obtenemos un término de consulta que el usuario especificó en un control TextBox llamado searchQueryTextBox:Here we get a query term that the user has entered into a TextBox control called searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Establecer las opciones de consulta y el filtro de búsqueda.Set the query options and search filter.

    Las opciones de consulta determinan de qué manera se ordenan los resultados de la búsqueda, mientras que el filtro de búsqueda determina qué elementos se incluyen en los resultados de la búsqueda.Query options determine how the search results are sorted, while the search filter determines which items are included in the search results.

    En este ejemplo se establecen las opciones de consulta que ordenan los resultados de la búsqueda por relevancia y luego por la fecha de modificación.This example sets query options that sort the search results by relevance and then the date modified. El filtro de búsqueda es el término de la consulta que el usuario especificó en el paso anterior:The search filter is the query term that the user entered in the previous step:

    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. Ejecutar la consulta y procesar los resultados.Run the query and process the results.

    En el siguiente ejemplo se ejecuta la consulta de búsqueda en el Grupo Hogar y se guardan los nombres de cualquier archivo coincidente como una lista de cadenas.The following example runs the search query in the HomeGroup and saves the names of any matching files as a list of strings.

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

Buscar archivos compartidos de un usuario en particular en el Grupo HogarSearch the HomeGroup for a particular user's shared files

En esta sección se muestra cómo buscar archivos del Grupo Hogar que comparte un usuario en particular.This section shows you how to find HomeGroup files that are shared by a particular user.

  1. Obtener una colección de usuarios del Grupo en el Hogar.Get a collection of HomeGroup users.

    Cada una de las carpetas de primer nivel del Grupo Hogar representa un usuario de Grupo Hogar individual.Each of the first-level folders in the HomeGroup represents an individual HomeGroup user. Por lo tanto, para obtener una colección de usuarios de Grupo Hogar, llama a GetFoldersAsync para recuperar las carpetas de Grupo Hogar de nivel superior.So, to get the collection of HomeGroup users, call GetFoldersAsync retrieve the top-level HomeGroup folders.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Buscar la carpeta del usuario de destino y crear una consulta de archivo específica para la carpeta del usuario en particular.Find the target user's folder, and then create a file query scoped to that user's folder.

    El ejemplo siguiente itera a través de las carpetas recuperadas para buscar la carpeta del usuario de destino.The following example iterates through the retrieved folders to find the target user's folder. Después, establece las opciones de consulta para buscar todos los archivos de la carpeta, ordenados primero por importancia y posteriormente por la fecha de modificación.Then, it sets query options to find all files in the folder, sorted first by relevance and then by the date modified. El ejemplo crea una cadena que informa acerca del número de archivos encontrados, junto con los nombres de los archivos.The example builds a string that reports the number of files found, along with the names of the files.

    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 del Grupo HogarStream video from the HomeGroup

Sigue estos pasos para transmitir contenido de vídeo del Grupo Hogar:Follow these steps to stream video content from the HomeGroup:

  1. Incluir un elemento MediaElement en su aplicación.Include a MediaElement in your app.

    MediaElement te permite reproducir contenido de audio y vídeo en tu aplicación.A MediaElement lets you play back audio and video content in your app. Para obtener información sobre la reproducción de audio y vídeo, consulta Crear controles de transporte personalizados y Audio, vídeo y cámara.For more information on audio and video playback, see Create custom transport controls and Audio, video, and camera.

    <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 un selector de archivos en el Grupo en el Hogar y aplique un filtro que incluya archivos de vídeo con los formatos que admite su aplicación.Open a file picker at the HomeGroup and apply a filter that includes video files in the formats that your app supports.

    Este ejemplo incluye archivos .mp4 y .wmv en el selector para abrir archivos.This example includes .mp4 and .wmv files in the file open picker.

    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. Abre la selección de archivos del usuario para el acceso de lectura, establece la secuencia de archivos como origen para el elemento MediaElement y, luego, reproduce el archivo.Open the user's file selection for read access, and set the file stream as the source for the MediaElement, and then play the file.

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