Compartir a través de


Inicio automático con Reproducción automática

Puedes usar reproducción automática para proporcionar la aplicación como opción cuando un usuario conecta un dispositivo a su PC. Esto incluye dispositivos que no son de volumen, como una cámara o un reproductor multimedia, o dispositivos de volumen, como una unidad usb, una tarjeta SD o un DVD. También puedes usar reproducción automática para ofrecer la aplicación como opción cuando los usuarios compartan archivos entre dos equipos mediante proximidad (pulsación).

Nota:

Si eres un fabricante de dispositivos y quieres asociar tu aplicación de dispositivo Microsoft Store como un controlador de reproducción automática para tu dispositivo, puedes identificar esa aplicación en los metadatos del dispositivo. Para obtener más información, consulta Reproducción automática para aplicaciones de la Microsoft Store para dispositivos.

Regístrese para el contenido de AutoPlay

Puede registrar aplicaciones como opciones para reproducción automática eventos de contenido. Los eventos de contenido de Reproducción Automática se generan cuando se inserta un dispositivo de volumen, como una tarjeta de memoria de cámara, una unidad flash o un DVD en el PC. Aquí se muestra cómo identificar la aplicación como una opción de reproducción automática cuando se inserta un dispositivo de volumen desde una cámara.

En este tutorial, ha creado una aplicación que muestra archivos de imagen o los copia en el directorio Imágenes. Usted registró la aplicación para el evento de contenido de Reproducción Automática ShowPicturesOnArrival.

AutoPlay también genera eventos de contenido para el contenido compartido entre equipos mediante acercamiento (tapping). Puede usar los pasos y el código de esta sección para controlar los archivos que se comparten entre equipos que usan proximidad. En la tabla siguiente se enumeran los eventos de contenido de Reproducción automática que están disponibles para compartir contenido mediante proximidad.

Acción Evento de Autorreproducción de contenido
Compartir música Reproducir archivos de música al llegar
Uso compartido de vídeos ReproducirArchivosDeVideoAlLlegar

Cuando los archivos se comparten mediante proximidad, la propiedad Files del objeto FileActivatedEventArgs contiene una referencia a una carpeta raíz que contiene todos los archivos compartidos.

Paso 1: Crear un nuevo proyecto y agregar declaraciones de Reproducción automática

  1. Abra Microsoft Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C# , en Windows, seleccione Aplicación en blanco para UWP (.NET Native). Asigne un nombre a la aplicación AutoPlayDisplayOrCopyImages y haga clic en Aceptar.
  2. Abra el archivo Package.appxmanifest y seleccione la pestaña de capacidades. Seleccione las capacidades de almacenamiento extraíble y de biblioteca de imágenes. Esto proporciona a la aplicación acceso a dispositivos de almacenamiento extraíbles para la memoria de la cámara y acceso a imágenes locales.
  3. En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones Disponibles, seleccione Contenido de AutoReproducción y haga clic en Agregar. Seleccione el nuevo elemento contenido de reproducción automática que se agregó a la lista de declaraciones admitidas.
  4. Una declaración contenido de reproducción automática identifica tu aplicación como una opción cuando Reproducción automática genera un evento de contenido. El evento se basa en el contenido de un dispositivo de volumen, como un DVD o una unidad usb. AutoPlay examina el contenido del dispositivo de volumen y determina qué evento de contenido se va a generar. Si la raíz del volumen contiene una carpeta DCIM, AVCHD o PRIVATE\ACHD, o si un usuario ha habilitado Elegir qué hacer con cada tipo de medio en el Panel de control de AutoPlay y hay imágenes en la raíz del volumen, AutoPlay genera el evento ShowPicturesOnArrival. En la sección Acciones de lanzamiento, escriba los valores de la tabla 1 que se presenta a continuación para la primera acción de lanzamiento.
  5. En la sección Acciones de inicio para el elemento Contenido de reproducción automática, haga clic en Agregar nuevo para agregar una segunda acción de inicio. Escriba los valores de la tabla 2 siguiente para la segunda acción de inicio.
  6. En la lista desplegable Declaraciones disponibles, seleccione Asociaciones de tipos de archivo y haga clic en Agregar. En las propiedades de la nueva declaración Asociaciones de Tipos de Archivo, establezca el campo Nombre visible en AutoPlay Copy o Show Images y el campo Nombre en image_association1. En la sección Tipos de archivo admitidos , haga clic en Agregar nuevo. Establezca el campo tipo de archivo en .jpg. En la sección tipos de archivo admitidos, establezca el campo tipo de archivo de la nueva asociación de archivos a .png. En el caso de los eventos de contenido, AutoPlay filtra cualquier tipo de archivo que no esté explícitamente asociado con tu aplicación.
  7. Guarde y cierre el archivo de manifiesto.

Tabla 1

Configuración Importancia
Verbo mostrar
Nombre para mostrar de la acción Mostrar imágenes
Evento de contenido Mostrar imágenes al llegar

La configuración Nombre para mostrar de la acción identifica la cadena que Reproducción Automática muestra para su aplicación. La configuración verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puedes especificar varias acciones de inicio para un evento de AutoPlay y usar la configuración Verb para determinar qué opción ha seleccionado un usuario para tu aplicación. Puedes saber qué opción seleccionó el usuario comprobando la propiedad del verbo en los argumentos del evento de inicio pasados a tu aplicación. Puede usar cualquier valor para la configuración de Verb, excepto abrir, que está reservado.

Tabla 2

Configuración Importancia
Verbo copiar
Nombre para mostrar de la acción Copiar imágenes en la biblioteca
Evento de contenido Mostrar imágenes al llegar

Paso 2: Agregar interfaz de usuario XAML

Abra el archivo MainPage.xaml y agregue el siguiente CÓDIGO XAML a la sección predeterminada <Grid>.

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

Paso 3: Agregar código de inicialización

El código de este paso comprueba el valor del verbo en la propiedad Verb, que es uno de los argumentos de inicio pasados a la aplicación durante el evento OnFileActivated. A continuación, el código llama a un método relacionado con la opción seleccionada por el usuario. Para el evento de memoria de la cámara, AutoPlay pasa la carpeta raíz del almacenamiento de la cámara a la aplicación. Puede recuperar esta carpeta del primer elemento de la propiedad Files.

Abra el archivo App.xaml.cs y agregue el código siguiente a la clase App.

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

Nota:

 Los DisplayImages métodos y CopyImages se agregan en los pasos siguientes.

Paso 4: Agregar código para mostrar imágenes

En el archivo MainPage.xaml.cs, agregue el código siguiente a la clase 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;
        });
}

Paso 5: Agregar código para copiar imágenes

En el archivo MainPage.xaml.cs, agregue el código siguiente a la clase 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");
    }
}

Paso 6: Compilar y ejecutar la aplicación

  1. Presione F5 para compilar e implementar la aplicación (en modo de depuración).
  2. Para ejecutar la aplicación, inserte una tarjeta de memoria de cámara u otro dispositivo de almacenamiento desde una cámara en el equipo. A continuación, seleccione una de las opciones de evento de contenido que especificó en el archivo package.appxmanifest de la lista de opciones de Reproducción automática. Este código de ejemplo solo muestra o copia imágenes en la carpeta DCIM de una tarjeta de memoria de cámara. Si la tarjeta de memoria de la cámara almacena imágenes en una carpeta AVCHD o PRIVATE\ACHD, deberá actualizar el código en consecuencia.

Nota:

Si no tiene una tarjeta de memoria de cámara, puede usar una unidad flash si tiene una carpeta denominada DCIM en la raíz y si la carpeta DCIM tiene una subcarpeta que contiene imágenes.

Registro para un dispositivo de reproducción automática

Puedes registrar aplicaciones como opciones para eventos de dispositivo de AutoPlay. AutoPlay los eventos del dispositivo se generan cuando un dispositivo está conectado a un equipo.

Aquí mostramos cómo identificar tu aplicación como una opción de Reproducción Automática cuando una cámara está conectada a un PC. La aplicación se registra como controlador para el evento de WPD\ImageSourceAutoPlay. Se trata de un evento común que el sistema Windows Portable Device (WPD) genera cuando las cámaras y otros dispositivos de imagen le notifican que son un *ImageSource* usando MTP. Para obtener más información, consulta Dispositivos Portátiles de Windows.

Importante Las API de Windows.Devices.Portable.StorageDeviceforman parte de la familia de dispositivos de escritorio . Las aplicaciones solo pueden usar estas API en dispositivos Windows 10 de la familia de dispositivos de escritorio, como equipos.

Paso 1: Crear otro nuevo proyecto y agregar declaraciones de Reproducción automática

  1. Abra Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C# , en Windows, seleccione Aplicación en blanco para UWP (.NET Native). Asigna el nombre AutoPlayDevice_Camera a la aplicación y haz clic en OK.
  2. Abra el archivo Package.appxmanifest y seleccione la pestaña Capacidades. Seleccione la capacidad Almacenamiento extraíble. Esto proporciona a la aplicación acceso a los datos de la cámara como un dispositivo de almacenamiento extraíble.
  3. En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones disponibles, seleccione Dispositivo de AutoReproducción y haga clic en Agregar. Seleccione el nuevo elemento Dispositivo AutoPlay que se agregó a la lista de Declaraciones Admitidas.
  4. Una declaración dispositivo de reproducción automática identifica la aplicación como una opción cuando La reproducción automática genera un evento de dispositivo para eventos conocidos. En la sección Acciones de Lanzamiento, escriba los valores de la tabla siguiente para la primera acción de lanzamiento.
  5. En la lista desplegable Declaraciones disponibles, seleccione Asociaciones de tipos de archivo y haga clic en Agregar. En las propiedades de la declaración de tipo de archivo Asociaciones, establezca el campo Nombre para mostrar en Mostrar Imágenes de la Cámara y el campo Nombre en camera_association1. En la sección Tipos de archivo admitidos, haga clic en Agregar nuevo (si es necesario). Establezca el campo tipo de archivo en .jpg. En la sección Tipos de archivo admitidos, haga clic en Agregar Nuevo otra vez. Establezca el campo tipo de archivo de la nueva asociación de archivos en .png. En el caso de los eventos de contenido, AutoPlay filtra cualquier tipo de archivo que no esté explícitamente asociado con tu aplicación.
  6. Guarde y cierre el archivo de manifiesto.
Configuración Importancia
Verbo mostrar
Nombre para mostrar de la acción Mostrar imágenes
Evento de contenido WPD\ImageSource

La configuración Nombre para mostrar de la acción identifica la cadena que Reproducción Automática muestra para su aplicación. La configuración verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puedes especificar varias acciones de inicio para un evento de AutoPlay y usar la configuración Verb para determinar qué opción ha seleccionado un usuario para tu aplicación. Puedes saber qué opción seleccionó el usuario comprobando la propiedad del verbo en los argumentos del evento de inicio pasados a tu aplicación. Puede usar cualquier valor para la configuración de Verb, excepto abrir, que está reservado. Para obtener un ejemplo del uso de varios verbos en una sola aplicación, consulte Registro de contenido de reproducción automática.

Paso 2: Agregar referencia de ensamblado para las extensiones de escritorio

Las API necesarias para acceder al almacenamiento en un dispositivo portátil Windows, Windows.Devices.Portable.StorageDevice, forman parte de la familia de dispositivos de escritorio. Esto significa que se requiere un ensamblado especial para usar las API y esas llamadas solo funcionarán en un dispositivo de la familia de dispositivos de escritorio (como un equipo).

  1. En Solution Explorer, haga clic con el botón derecho en References y, a continuación, Agregar referencia....
  2. Expanda universal de Windows y haga clic en Extensiones.
  3. A continuación, seleccione Extensiones de escritorio de Windows para UWP y haga clic en Aceptar.

Paso 3: Agregar interfaz de usuario XAML

Abra el archivo MainPage.xaml y agregue el siguiente CÓDIGO XAML a la sección predeterminada <Grid>.

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

Paso 4: Agregar código de activación

El código de este paso hace referencia a la cámara como Dispositivo de almacenamiento pasando el identificador de información del dispositivo de la cámara al método FromId. El identificador de información del dispositivo de la cámara se obtiene mediante la conversión inicial de los argumentos del evento como DeviceActivatedEventArgs, y a continuación se obtiene el valor de la propiedad DeviceInformationId.

Abra el archivo App.xaml.cs y agregue el código siguiente a la clase App.

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

Nota:

El método ShowImages se agrega en el paso siguiente.

Paso 5: Agregar código para mostrar información del dispositivo

Puede obtener información sobre la cámara de las propiedades de la clase StorageDevice. El código de este paso muestra el nombre del dispositivo y otra información al usuario cuando se ejecuta la aplicación. A continuación, el código llama a los métodos GetImageList y GetThumbnail, que agregará en el paso siguiente, para mostrar miniaturas de las imágenes almacenadas en la cámara.

En el archivo MainPage.xaml.cs, agregue el código siguiente a la clase 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));
    }
}

Nota:

Los métodos GetImageList y GetThumbnail se agregan en el paso siguiente.

Paso 6: Agregar código para mostrar imágenes

El código de este paso muestra miniaturas de las imágenes almacenadas en la cámara. El código realiza llamadas asincrónicas a la cámara para obtener la imagen en miniatura. Sin embargo, la siguiente llamada asincrónica no se produce hasta que se completa la llamada asincrónica anterior. Esto garantiza que solo se realice una solicitud a la cámara a la vez.

En el archivo MainPage.xaml.cs, agregue el código siguiente a la clase 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;
}

Paso 7: Compilar y ejecutar la aplicación

  1. Presione F5 para compilar e implementar la aplicación (en modo de depuración).
  2. Para ejecutar la aplicación, conecte una cámara a la máquina. A continuación, seleccione la aplicación en la lista de opciones de Reproducción automática.

Nota:

No todas las cámaras anuncian para el evento de dispositivo de reproducción automática WPD\ImageSource.

Configuración del almacenamiento extraíble

Puede identificar un dispositivo de volumen, como una tarjeta de memoria o una unidad USB, como un dispositivo de Reproducción Automática cuando el dispositivo de volumen está conectado a un ordenador. Esto resulta especialmente útil cuando quiere asociar una aplicación específica para de reproducción automática para presentar al usuario para el dispositivo de volumen.

Aquí se muestra cómo identificar el dispositivo de volumen como un dispositivo Reproducción automática.

Para identificar el dispositivo de volumen como un dispositivo Reproducción automática, agregue un archivo autorun.inf a la unidad raíz del dispositivo. En el archivo autorun.inf, agregue una clave de CustomEvent a la sección AutoRun. Cuando tu dispositivo de volumen se conecta a un equipo, AutoPlay encontrará el archivo autorun.inf y tratará tu volumen como un dispositivo. AutoPlay creará un evento de AutoPlay utilizando el nombre proporcionado para la clave CustomEvent. A continuación, puede crear una aplicación y registrarla como controlador para ese evento Reproducción automática. Cuando el dispositivo está conectado al PC, AutoPlay mostrará la aplicación como un gestor para el dispositivo de volumen. Para obtener más información sobre los archivos autorun.inf, consulta entradas autorun.inf.

Paso 1: Crear un archivo autorun.inf

En la unidad raíz del dispositivo de volumen, agregue un archivo denominado autorun.inf. Abra el archivo autorun.inf y agregue el texto siguiente.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Paso 2: Crear un nuevo proyecto y agregar declaraciones de Reproducción automática

  1. Abra Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C# , en Windows, seleccione Aplicación en blanco para UWP (.NET Native). Asigne un nombre a la aplicación AutoPlayCustomEvent y haga clic en Aceptar.

  2. Abra el archivo Package.appxmanifest y seleccione la pestaña Capacidades. Seleccione la capacidad Almacenamiento extraíble. Esto proporciona a la aplicación acceso a los archivos y carpetas en dispositivos de almacenamiento extraíbles.

  3. En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones Disponibles, seleccione Contenido de AutoReproducción y haga clic en Agregar. Seleccione el nuevo elemento contenido de reproducción automática que se agregó a la lista de declaraciones admitidas.

    Nota:

    Como alternativa, también puede agregar una declaración de Dispositivo de reproducción automática para el evento de Reproducción automática personalizado.

  4. En la sección Acciones de inicio de la declaración de evento de tu contenido de reproducción automática , introduce los valores de la tabla siguiente para la primera acción de inicio.

  5. En la lista desplegable Declaraciones disponibles, seleccione Asociaciones de tipos de archivo y haga clic en Agregar. En las propiedades de la declaración nueva Asociaciones de Tipo de Archivo, establezca el campo Nombre para Mostrar en Mostrar archivos .ms y el campo Nombre en ms_association. En la sección Tipos de archivo admitidos , haga clic en Agregar nuevo. Establezca el campo tipo de archivo en .ms. En el caso de los eventos de contenido, la Reproducción automática filtra los tipos de archivo que no están explícitamente asociados con tu aplicación.

  6. Guarde y cierre el archivo de manifiesto.

Configuración Importancia
Verbo mostrar
Nombre para mostrar de la acción Mostrar archivos
Evento de contenido AutoPlayCustomEventQuickstart

El valor del evento de contenido es el texto que proporcionó para la clave CustomEvent en su archivo autorun.inf. La configuración Nombre para mostrar de la acción identifica la cadena que Reproducción Automática muestra para su aplicación. La configuración verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puedes especificar varias acciones de inicio para un evento de AutoPlay y usar la configuración Verb para determinar qué opción ha seleccionado un usuario para tu aplicación. Puedes saber qué opción seleccionó el usuario comprobando la propiedad del verbo en los argumentos del evento de inicio pasados a tu aplicación. Puede usar cualquier valor para la configuración de Verb, excepto abrir, que está reservado.

Paso 3: Agregar la interfaz de usuario XAML

Abra el archivo MainPage.xaml y agregue el siguiente CÓDIGO XAML a la sección predeterminada <Grid>.

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

Paso 4: Agregar el código de activación

El código de este paso llama a un método para mostrar las carpetas en el directorio raíz de tu dispositivo de almacenamiento. En el caso de los eventos de contenido de AutoPlay, AutoPlay pasa la carpeta raíz del dispositivo de almacenamiento en los argumentos de inicio pasados a la aplicación durante el evento OnFileActivated. Puede recuperar esta carpeta del primer elemento de la propiedad Files.

Abra el archivo App.xaml.cs y agregue el código siguiente a la clase App.

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

Nota:

El método DisplayFiles se agrega en el paso siguiente.

Paso 5: Agregar código para mostrar carpetas

En el archivo MainPage.xaml.cs, agregue el código siguiente a la clase 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;
}

Paso 6: Compilar y ejecutar la aplicación

  1. Presione F5 para compilar e implementar la aplicación (en modo de depuración).
  2. Para ejecutar la aplicación, inserte una tarjeta de memoria u otro dispositivo de almacenamiento en el equipo. A continuación, seleccione la aplicación en la lista de opciones del controlador de reproducción automática.

Referencia de eventos AutoPlay

El sistema AutoPlay permite que las aplicaciones se registren para una variedad de eventos relacionados con la llegada de dispositivos y volúmenes (discos). Para registrarse para eventos de contenido de reproducción automática, debe habilitar la funcionalidad almacenamiento extraíble en el manifiesto del paquete. En esta tabla se muestran los eventos para los que puede registrarse y cuándo se generan.

Escenario Evento Descripción
Uso de fotos en una cámara WPD\ImageSource Se crea para cámaras que se identifican como dispositivos portátiles de Windows y ofrecen la funcionalidad ImageSource.
Uso de música en un reproductor de audio WPD\AudioSource Se genera para reproductores multimedia que se identifican como dispositivos portátiles de Windows y ofrecen la funcionalidad AudioSource.
Uso de vídeos en una cámara de vídeo WPD\VideoSource Se genera para cámaras de vídeo que se identifican como dispositivos portátiles de Windows y ofrecen la funcionalidad VideoSource.
Acceso a una unidad flash conectada o a una unidad de disco duro externa StorageOnArrival Se activa cuando una unidad o volumen está conectado al PC. Si la unidad o volumen contiene una carpeta DCIM, AVCHD o PRIVATE\ACHD en la raíz del disco, se genera en su lugar el evento ShowPicturesOnArrival.
Uso de fotos del almacenamiento masivo (heredado) ShowPicturesOnArrival Se genera cuando una unidad o volumen contiene en la raíz del disco una carpeta DCIM, AVCHD o PRIVATE\ACHD. Si un usuario ha habilitado Elegir qué hacer con cada tipo de medios en el Panel de control de reproducción automática, AutoPlay examinará un volumen conectado a la PC para determinar el tipo de contenido en el disco. Cuando se encuentran imágenes, se genera ShowPicturesOnArrival.
Recepción de fotos con uso compartido por proximidad (pulsar y enviar) ShowPicturesOnArrival Cuando los usuarios envían contenido utilizando la función de proximidad (tocar y enviar), la reproducción automática examinará los archivos compartidos para determinar el tipo de contenido. Si se encuentran imágenes, se genera ShowPicturesOnArrival.
Uso de música del almacenamiento masivo (heredado) ReproducirArchivosDeMúsicaAlLlegar Si un usuario ha habilitado Elegir qué hacer con cada tipo de multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un medio conectado al PC para determinar el tipo de contenido en el disco. Cuando se encuentran archivos de música, se activa PlayMusicFilesOnArrival.
Recibir música con uso compartido por proximidad (pulsar y enviar) ReproducirArchivosDeMúsicaAlLlegar Cuando los usuarios envían contenido utilizando la función de proximidad (tocar y enviar), la reproducción automática examinará los archivos compartidos para determinar el tipo de contenido. Si se encuentran archivos de música, se genera PlayMusicFilesOnArrival.
Uso de vídeos de almacenamiento masivo (heredado) ReproducirArchivosDeVideoAlLlegar Si un usuario ha habilitado Elegir qué hacer con cada tipo de multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un medio conectado al PC para determinar el tipo de contenido en el disco. Cuando se encuentran archivos de vídeo, se lanza PlayVideoFilesOnArrival.
Recibir vídeos con Compartir por proximidad (tocar y enviar) ReproducirArchivosDeVideoAlLlegar Cuando los usuarios envían contenido utilizando la función de proximidad (tocar y enviar), la reproducción automática examinará los archivos compartidos para determinar el tipo de contenido. Si se encuentran archivos de vídeo, se activa PlayVideoFilesOnArrival.
Control de conjuntos mixtos de archivos desde un dispositivo conectado MixedContentOnArrival Si un usuario ha habilitado Elegir qué hacer con cada tipo de multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un medio conectado al PC para determinar el tipo de contenido en el disco. Si no se encuentra ningún tipo de contenido específico (por ejemplo, imágenes), se genera MixedContentOnArrival.
Control de conjuntos mixtos de archivos con uso compartido de proximidad (pulsar y enviar) MixedContentOnArrival Cuando los usuarios envían contenido utilizando la función de proximidad (tocar y enviar), la reproducción automática examinará los archivos compartidos para determinar el tipo de contenido. Si no se encuentra ningún tipo de contenido específico (por ejemplo, imágenes), se genera MixedContentOnArrival.
Control del vídeo desde medios ópticos reproducirPeliculaDVDArrival
ReproducirBluRayAlLlegar
ReproducirPelículaDeCDDeVideoAlLlegar
PlaySuperVideoCDMovieOnArrival
Cuando se inserta un disco en la unidad óptica, AutoPlay examinará los archivos para determinar el tipo de contenido. Cuando se encuentran archivos de vídeo, se genera el evento correspondiente al tipo de disco óptico.
Controlar la música desde medios ópticos PlayCDAudioOnArrival
PlayDVDAudioOnArrival
Cuando se inserta un disco en la unidad óptica, AutoPlay examinará los archivos para determinar el tipo de contenido. Cuando se encuentran archivos de música, se genera el evento correspondiente al tipo de disco óptico.
Reproducir discos mejorados reproducirCDMejoradoAlLlegar
reproducirDVDMejoradoAlLlegar
Cuando se inserta un disco en la unidad óptica, AutoPlay examinará los archivos para determinar el tipo de contenido. Cuando se encuentra un disco mejorado, se genera el evento correspondiente al tipo de disco óptico.
Manejo de discos ópticos grabables ManejarGrabaciónDeCDAlLlegar
GestionarGrabaciónDVDAlLlegar
GestioneElBDBurningAlLlegar
Cuando se inserta un disco en la unidad óptica, AutoPlay examinará los archivos para determinar el tipo de contenido. Cuando se encuentra un disco grabable, se genera el evento correspondiente al tipo de disco óptico.
Controlar cualquier otro dispositivo o conexión de volumen contenidoDesconocidoAlLlegar Se genera para todos los eventos en caso de encontrar contenido que no coincida con ninguno de los eventos de contenido de Reproducción automática. No se recomienda usar este evento. Solo debe registrar la aplicación para los eventos específicos de Reproducción automática que puede controlar.

Puede especificar que AutoPlay genere un evento de contenido de AutoPlay personalizado mediante la entrada CustomEvent en el archivo autorun.inf de un volumen. Para obtener más información, consulta entradas de autorun.inf.

Puedes registrar tu aplicación como un controlador de eventos de contenido de reproducción automática o de dispositivo de reproducción automática agregando una extensión al archivo package.appxmanifest de tu aplicación. Si usa Visual Studio, puede agregar una de contenido de reproducción automática o declaración del dispositivo de reproducción automática en la pestaña Declaraciones de . Si está editando directamente el archivo package.appxmanifest de la aplicación, agregue un elemento Extensión al manifiesto del paquete que especifique windows.autoPlayContent o windows.autoPlayDevice como Categoría. Por ejemplo, la siguiente entrada en el manifiesto del paquete agrega una extensión AutoPlay Content para registrar la aplicación como un controlador para el 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>