Inicio automático con Reproducción automática
Puede usar Reproducción automática para ofrecer su aplicación como opción cuando un usuario conecte 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 puede usar la Reproducción automática para ofrecer su aplicación como opción cuando los usuarios comparten archivos entre dos PC mediante proximidad (toque).
Nota:
Si es un fabricante de dispositivos y quiere asociar la aplicación de dispositivo de Microsoft Store como un controlador de reproducción automática para el dispositivo, puede identificar esa aplicación en los metadatos del dispositivo. Para obtener más información, consulte Reproducción automática para aplicaciones de dispositivos de Microsoft Store.
Registro para contenido de reproducción automática
Puede registrar aplicaciones como opciones para eventos de contenido de reproducción automática. Los eventos de contenido de reproducción automática se generan cuando se inserta en el equipo un dispositivo con volumen, como una tarjeta de memoria de cámara, una unidad USB o un DVD. 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 Imágenes. Registró la aplicación para el evento de contenido de reproducción automática ShowPicturesOnArrival.
La reproducción automática también genera eventos de contenido para el contenido compartido entre PC mediante proximidad (toque). Puede usar los pasos y el código de esta sección para controlar los archivos que se comparten entre PC 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.
Action | Evento de contenido de reproducción automática |
---|---|
Compartir música | PlayMusicFilesOnArrival |
Compartir vídeos | PlayVideoFilesOnArrival |
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
- Abra Microsoft Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C#, en Windows, seleccione Aplicación vacía (Windows universal). Asigne un nombre a la aplicación AutoPlayDisplayOrCopyImages y haga clic en Aceptar.
- Abra el archivo Package.appxmanifest y seleccione la pestaña Capacidades. Seleccione las capacidades Almacenamiento extraíble y 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.
- En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones disponibles, seleccione Contenido de reproducción automática y haga clic en Agregar. Seleccione el nuevo elemento Contenido de reproducción automática que se agregó a la lista Declaraciones admitidas.
- Una declaración de Contenido de reproducción automática identifica la aplicación como una opción cuando la 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 Thumb. Reproducción automática 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 contenido multimedia en el Panel de control de reproducción automática y se encuentran imágenes en la raíz de dicho volumen, la reproducción automática genera el evento ShowPicturesOnArrival. En la sección Acciones de inicio, escriba los valores de la tabla 1 siguiente para la primera acción de inicio.
- En la sección Acciones de inicio del 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.
- 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 tipo de archivo, establezca el campo Nombre para mostrar en Copiar o mostrar imágenes de reproducción automática 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 en .png. En el caso de los eventos de contenido, Reproducción automática filtra los tipos de archivo que no están asociados explícitamente a la aplicación.
- Guarda y cierra el archivo de manifiesto.
Tabla 1
Configuración | Valor |
---|---|
Verbo | mostrar |
Nombre para mostrar de la acción | Mostrar imágenes |
Evento de contenido | ShowPicturesOnArrival |
La configuración Nombre para mostrar de la acción identifica la cadena que muestra la reproducción automática para la aplicación. La opción de configuración Verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puede especificar varias acciones de inicio para un evento de reproducción automática y usar la configuración Verbo para determinar qué opción seleccionó un usuario para su aplicación. Para saber qué opción seleccionó el usuario, compruebe la propiedad verb de los argumentos del evento de inicio que se pasaron a la aplicación. Puede usar cualquier valor para la configuración Verb a excepción de open, que está reservado.
Tabla 2
Configuración | Valor |
---|---|
Verbo | copy |
Nombre para mostrar de la acción | Copiar imágenes en la biblioteca |
Evento de contenido | ShowPicturesOnArrival |
Paso 2: Agregar interfaz de usuario XAML
Abra el archivo MainPage.xaml y agregue el siguiente XAML a la sección <Cuadrícula> predeterminada.
<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 de 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, la reproducción automática 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 siguiente código 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 métodos
DisplayImages
yCopyImages
se agregan en los pasos siguientes.
Paso 4: Agregar código para mostrar imágenes
En el archivo MainPage.xaml.cs, agregue el siguiente código en 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 siguiente código en 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
- Presione F5 para compilar e implementar la aplicación (en modo de depuración).
- Para ejecutar la aplicación, inserte una tarjeta de memoria de cámara u otro dispositivo de almacenamiento desde una cámara en el PC. A continuación, seleccione una de las opciones de evento de contenido que especificó en el archivo package.appxmanifest en 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
Puede registrar aplicaciones como opciones para eventos de dispositivo de reproducción automática. Se generan eventos de dispositivo de reproducción automática cuando se conecta un dispositivo a un PC.
Aquí se muestra cómo identificar la 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 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 creación de imágenes le notifican que son un ImageSource mediante MTP. Para obtener más información, consulte Dispositivos portátiles de Windows.
Importante Las API Windows.Devices.Portable.StorageDevice forman 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 PC.
Paso 1: Crear otro nuevo proyecto y agregar declaraciones de reproducción automática
- Abra Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C#, en Windows, seleccione Aplicación vacía (Windows universal). Asigne un nombre a la aplicación AutoPlayDevice_Camera y haga clic en Aceptar.
- Abra el archivo Package.appxmanifest y seleccione la pestaña Capacidades. Seleccione la funcionalidad Almacenamiento extraíble. Esto proporciona a la aplicación acceso a los datos de la cámara como un dispositivo de volumen de almacenamiento extraíble.
- En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones disponibles, seleccione Dispositivo de reproducción automática y haga clic en Agregar. Seleccione el nuevo elemento Dispositivo de reproducción automática que se agregó a la lista Declaraciones admitidas.
- Una declaración de 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 inicio, escriba los valores de la tabla siguiente para la primera acción de inicio.
- 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 tipo de archivo, 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 (en caso necesario). Establezca el campo Tipo de archivo en .jpg. En la sección Tipos de archivo admitidos, haga clic de nuevo en Agregar nuevo. Establezca el campo Tipo de archivo de la nueva asociación de archivos en .png. En el caso de los eventos de contenido, Reproducción automática filtra los tipos de archivo que no están asociados explícitamente a la aplicación.
- Guarda y cierra el archivo de manifiesto.
Configuración | Valor |
---|---|
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 muestra la reproducción automática para la aplicación. La opción de configuración Verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puede especificar varias acciones de inicio para un evento de reproducción automática y usar la configuración Verbo para determinar qué opción seleccionó un usuario para su aplicación. Para saber qué opción seleccionó el usuario, compruebe la propiedad verb de los argumentos del evento de inicio que se pasaron a la aplicación. Puede usar cualquier valor para la configuración Verb a excepción de open, que está reservado. Para obtener un ejemplo de 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 PC).
- En el Explorador de soluciones, haga clic con el botón derecho en Referencias y, a continuación, en Agregar referencia…
- Expanda Windows universal y haga clic en Extensiones.
- 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 XAML a la sección <Cuadrícula> predeterminada.
<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 StorageDevice 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 primera conversión de los argumentos del evento como DeviceActivatedEventArgs y, a continuación, obtiene el valor de la propiedad DeviceInformationId.
Abra el archivo App.xaml.cs y agregue el siguiente código 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 siguiente código en 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 siguiente código en 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
- Presione F5 para compilar e implementar la aplicación (en modo de depuración).
- Para ejecutar la aplicación, conecte una cámara a la máquina. Luego seleccione la aplicación en la lista de opciones de reproducción automática.
Nota:
No todas las cámaras anuncian el evento de dispositivo de reproducción automática WPD\ImageSource.
Configurar el almacenamiento extraíble
Puede identificar un dispositivo de volumen como una tarjeta de memoria o una unidad de memoria como un dispositivo de reproducción automática cuando el dispositivo de volumen está conectado a un PC. Esto es especialmente útil cuando quiere asociar una aplicación específica para que la reproducción automática se presente al usuario para el dispositivo de volumen.
Aquí se muestra cómo identificar el dispositivo de volumen como un dispositivo de reproducción automática.
Para identificar el dispositivo de volumen como un dispositivo de reproducción automática, agregue un archivo autorun.inf a la unidad raíz del dispositivo. En el archivo autorun.inf, agregue una clave CustomEvent a la sección Ejecución automática. Cuando el dispositivo de volumen se conecta a un PC, la reproducción automática encontrará el archivo autorun.inf y tratará el volumen como un dispositivo. La reproducción automática creará un evento de reproducción automática con el nombre que proporcionó para la clave CustomEvent. A continuación, puede crear una aplicación y registrarla como controlador para ese evento de reproducción automática. Cuando el dispositivo esté conectado al PC, la reproducción automática mostrará la aplicación como controlador para el dispositivo de volumen. Para obtener más información sobre los archivos autorun.inf, consulte las 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
- Abra Visual Studio y seleccione Nuevo proyecto en el menú Archivo. En la sección Visual C#, en Windows, seleccione Aplicación vacía (Windows universal). Asigne a la aplicación el nombre AutoPlayCustomEvent y haga clic en Aceptar.
- Abra el archivo Package.appxmanifest y seleccione la pestaña Capacidades. Seleccione la funcionalidad Almacenamiento extraíble. Esto proporciona a la aplicación acceso a los archivos y carpetas en dispositivos de almacenamiento extraíbles.
- En el archivo de manifiesto, seleccione la pestaña Declaraciones. En la lista desplegable Declaraciones disponibles, seleccione Contenido de reproducción automática y haga clic en Agregar. Seleccione el nuevo elemento Contenido de reproducción automática que se agregó a la lista 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.
- En la sección Acciones de inicio de la declaración de eventos Contenido de reproducción automática, escriba los valores de la tabla siguiente para la primera acción de inicio.
- 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 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, Reproducción automática filtra los tipos de archivo que no están asociados explícitamente a la aplicación.
- Guarda y cierra el archivo de manifiesto.
Configuración | Valor |
---|---|
Verbo | mostrar |
Nombre para mostrar de la acción | Mostrar archivos |
Evento de contenido | AutoPlayCustomEventQuickstart |
El valor de Evento de contenido es el texto que proporcionó para la clave CustomEvent en el archivo autorun.inf. La configuración Nombre para mostrar de la acción identifica la cadena que muestra la reproducción automática para la aplicación. La opción de configuración Verbo identifica un valor que se pasa a la aplicación para la opción seleccionada. Puede especificar varias acciones de inicio para un evento de reproducción automática y usar la configuración Verbo para determinar qué opción seleccionó un usuario para su aplicación. Para saber qué opción seleccionó el usuario, compruebe la propiedad verb de los argumentos del evento de inicio que se pasaron a la aplicación. Puede usar cualquier valor para la configuración Verb a excepción de open, que está reservado.
Paso 3: Agregar la interfaz de usuario XAML
Abra el archivo MainPage.xaml y agregue el siguiente XAML a la sección <Cuadrícula> predeterminada.
<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 la unidad raíz del dispositivo de volumen. Para los eventos de contenido de reproducción automática, la reproducción automática 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 siguiente código 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 siguiente código en 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: Compilación y ejecución de la aplicación
- Presione F5 para compilar e implementar la aplicación (en modo de depuración).
- Para ejecutar la aplicación, inserte una tarjeta de memoria u otro dispositivo de almacenamiento en el PC. A continuación, seleccione la aplicación en la lista de opciones del controlador de reproducción automática.
Referencia de eventos de reproducción automática
El sistema de reproducción automática permite a las aplicaciones registrarse para una variedad de eventos de llegada de dispositivos y volúmenes (disco). Para registrarse en 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 genera 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 genera cuando se conecta una unidad o un volumen al PC. Si la unidad o el volumen contiene una carpeta DCIM, AVCHD o PRIVATE\ACHD en la raíz del disco, se genera el evento ShowPicturesOnArrival en su lugar. |
Uso de fotos del almacenamiento masivo (heredado) | ShowPicturesOnArrival | Se genera cuando una unidad o volumen contiene una carpeta DCIM, AVCHD o PRIVATE\ACHD en la raíz del disco. Si un usuario ha habilitado Elegir qué hacer con cada tipo de contenido multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un volumen conectado al 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 con proximidad (pulsar y enviar), la reproducción automática examina 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) | PlayMusicFilesOnArrival | Si un usuario ha habilitado Elegir qué hacer con cada tipo de contenido multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un volumen conectado al PC para determinar el tipo de contenido en el disco. Si se encuentran archivos de música, se genera PlayMusicFilesOnArrival. |
Recepción de música con uso compartido por proximidad (pulsar y enviar) | PlayMusicFilesOnArrival | Cuando los usuarios envían contenido con proximidad (pulsar y enviar), la reproducción automática examina los archivos compartidos para determinar el tipo de contenido. Si se encuentran archivos de música, se genera PlayMusicFilesOnArrival. |
Uso de vídeos del almacenamiento masivo (heredado) | PlayVideoFilesOnArrival | Si un usuario ha habilitado Elegir qué hacer con cada tipo de contenido multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un volumen conectado al PC para determinar el tipo de contenido en el disco. Cuando se encuentran archivos de vídeo, se genera PlayVideoFilesOnArrival. |
Recepción de vídeos con uso compartido por proximidad (pulsar y enviar) | PlayVideoFilesOnArrival | Cuando los usuarios envían contenido con proximidad (pulsar y enviar), la reproducción automática examina los archivos compartidos para determinar el tipo de contenido. Si se encuentran archivos de vídeo, se genera PlayVideoFilesOnArrival. |
Control de conjuntos mixtos de archivos desde un dispositivo conectado | MixedContentOnArrival | Si un usuario ha habilitado Elegir qué hacer con cada tipo de contenido multimedia en el Panel de control de reproducción automática, la reproducción automática examinará un volumen 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 con proximidad (pulsar y enviar), la reproducción automática examina 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 | PlayDVDMovieOnArrival PlayBluRayOnArrival PlayVideoCDMovieOnArrival PlaySuperVideoCDMovieOnArrival |
Cuando se inserta un disco en la unidad óptica, la reproducción automática 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 música desde medios ópticos | PlayCDAudioOnArrival PlayDVDAudioOnArrival |
Cuando se inserta un disco en la unidad óptica, la reproducción automática 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 | PlayEnhancedCDOnArrival PlayEnhancedDVDOnArrival |
Cuando se inserta un disco en la unidad óptica, la reproducción automática 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. |
Control de discos ópticos que se pueden escribir | HandleCDBurningOnArrival HandleDVDBurningOnArrival HandleBDBurningOnArrival |
Cuando se inserta un disco en la unidad óptica, la reproducción automática examinará los archivos para determinar el tipo de contenido. Cuando se encuentra un disco que se puede escribir, se genera el evento correspondiente al tipo de disco óptico. |
Controlar cualquier otra conexión de dispositivo o volumen | UnknownContentOnArrival | Se genera para todos los eventos en caso de que se encuentre contenido que no coincide con ninguno de los eventos de contenido de la reproducción automática. No se recomienda el uso de este evento. Solo debe registrar la aplicación para los eventos específicos de reproducción automática que puede controlar. |
Puede especificar que la reproducción automática genere un evento de contenido de reproducción automática personalizado mediante la entrada CustomEvent en el archivo autorun.inf de un volumen. Para obtener más información, consulte Entradas de autorun.inf.
Puede registrar la aplicación como un controlador de eventos de contenido de reproducción automática o dispositivo de reproducción automática agregando una extensión al archivo package.appxmanifest de la aplicación. Si usa Visual Studio, puede agregar una declaración Contenido de reproducción automática o Dispositivo de reproducción automática en la pestaña Declaraciones. Si está editando el archivo package.appxmanifest de la aplicación directamente, agregue un elemento Extension al manifiesto del paquete que especifica windows.autoPlayContent o windows.autoPlayDevice como Categoría. Por ejemplo, la siguiente entrada en el manifiesto del paquete agrega una extensión de Contenido de reproducción automática para registrar la aplicación como 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>