Avvio automatico con AutoPlay
Puoi usare la funzionalità AutoPlay per presentare la tua applicazione come opzione quando un utente connette un dispositivo al PC. Sono inclusi dispositivi non del volume, ad esempio una fotocamera o un lettore multimediale, oppure dispositivi del volume come una chiavetta USB, una scheda SD o un DVD. Puoi anche usare AutoPlay per offrire la tua app come opzione quando gli utenti condividono file tra due PC usando la prossimità (toccando).
Nota
Se sei un produttore del dispositivo e vuoi associare l'app per dispositivi di Microsoft Store come gestore AutoPlay per il dispositivo, puoi identificare l'app nei metadati del dispositivo. Per altre info, vedi AutoPlay per le app per dispositivi di Microsoft Store.
Registrarsi per il contenuto autoPlay
Puoi registrare le app come opzioni per gli eventi di contenuto AutoPlay . Un evento contenuto AutoPlay viene generato quando si inserisce nel PC un dispositivo di volume, come la scheda di memoria di una fotocamera, una chiavetta USB o un DVD. Qui viene illustrato come identificare l'app come opzione AutoPlay quando viene inserito un dispositivo del volume da una fotocamera.
In questa esercitazione è stata creata un'app che visualizza i file di immagine o li copia in Immagini. L'app è stata registrata per l'evento di contenuto AutoPlay ShowPicturesOnArrival.
AutoPlay genera anche eventi di contenuto per il contenuto condiviso tra PC tramite prossimità (tocco). È possibile usare i passaggi e il codice in questa sezione per gestire i file condivisi tra PC che usano la prossimità. Nella tabella seguente sono elencati gli eventi di contenuto AutoPlay disponibili per la condivisione del contenuto tramite prossimità.
Azione | Evento contenuto AutoPlay |
---|---|
Condivisione della musica | PlayMusicFilesOnArrival |
Condivisione di video | PlayVideoFilesOnArrival |
Quando i file vengono condivisi tramite prossimità, la proprietà Files dell'oggetto FileActivatedEventArgs contiene un riferimento a una cartella radice che contiene tutti i file condivisi.
Passaggio 1: Creare un nuovo progetto e aggiungere dichiarazioni AutoPlay
- Aprire Microsoft Visual Studio e scegliere Nuovo progetto dal menu File. Nella sezione Visual C# in Windows selezionare App vuota (Windows universale). Assegnare all'app il nome AutoPlayDisplayOrCopyImages e fare clic su OK.
- Aprire il file Package.appxmanifest e selezionare la scheda Funzionalità. Selezionare le funzionalità Rimovibili Archiviazione e Raccolta immagini. In questo modo l'app può accedere ai dispositivi di archiviazione rimovibili per la memoria della fotocamera e all'accesso alle immagini locali.
- Nel file manifesto selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili selezionare Contenuto AutoPlay e fare clic su Aggiungi. Selezionare il nuovo elemento Contenuto AutoPlay aggiunto all'elenco Dichiarazioni supportate.
- Una dichiarazione contenuto AutoPlay identifica l'app come opzione quando AutoPlay genera un evento di contenuto. L'evento si basa sul contenuto di un dispositivo del volume, ad esempio un DVD o un'unità digitale. AutoPlay esamina il contenuto del dispositivo del volume e determina l'evento di contenuto da generare. Se la radice del volume contiene una cartella DCIM, AVCHD o PRIVATE\ACHD oppure se un utente ha abilitato Scegli cosa fare con ciascun tipo di supporto nel pannello di controllo di AutoPlay e le immagini si trovano nella radice del volume, quindi AutoPlay genera l'evento ShowPicturesOnArrival. Nella sezione Azioni di avvio immettere i valori della tabella 1 seguente per la prima azione di avvio.
- Nella sezione Azioni di avvio per l'elemento Contenuto AutoPlay fare clic su Aggiungi nuovo per aggiungere una seconda azione di avvio. Immettere i valori nella tabella 2 seguente per la seconda azione di avvio.
- Nell'elenco a discesa Dichiarazioni disponibili selezionare Associazioni tipi di file e fare clic su Aggiungi. Nelle proprietà della nuova dichiarazione Associazioni tipo di file impostare il campo Nome visualizzato su Copia automatica o Mostra immagini e il campo Nome su image_association1. Nella sezione Tipi di file supportati fare clic su Aggiungi nuovo. Impostare il campo Tipo di file su .jpg. Nella sezione Tipi di file supportati impostare il campo Tipo di file della nuova associazione file su .png. Per gli eventi di contenuto, AutoPlay filtra tutti i tipi di file che non sono associati in modo esplicito all'app.
- Salvare e chiudere il file manifesto.
Tabella 1
Impostazione | Valore |
---|---|
Verbo | show |
Nome visualizzato azione | Mostra immagini |
Evento contenuto | ShowPicturesOnArrival |
L'impostazione Nome visualizzato azione identifica la stringa visualizzata da AutoPlay per l'app. L'impostazione Verb identifica un valore passato all'applicazione per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione Verbo per determinare l'opzione selezionata da un utente per la tua app. Puoi determinare l'azione selezionata dall'utente controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. Puoi usare qualsiasi valore per l'impostazione Verbo ad eccezione di open, che è riservato.
Tabella 2
Impostazione | Valore |
---|---|
Verbo | copy |
Nome visualizzato azione | Copiare immagini nella raccolta |
Evento contenuto | ShowPicturesOnArrival |
Passaggio 2: Aggiungere l'interfaccia utente XAML
Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione <Griglia> predefinita.
<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"/>
Passaggio 3: Aggiungere il codice di inizializzazione
Il codice in questo passaggio controlla il valore del verbo nella proprietà Verb, ovvero uno degli argomenti di avvio passati all'app durante l'evento OnFileActivated. Il codice chiama quindi un metodo correlato all'opzione selezionata dall'utente. Per l'evento di memoria della fotocamera, AutoPlay passa la cartella radice dello spazio di archiviazione della fotocamera all'app. È possibile recuperare questa cartella dal primo elemento della proprietà File.
Nel file di progetto App.xaml.cs aggiungere la proprietà seguente alla classe 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 I
DisplayImages
metodi eCopyImages
vengono aggiunti nei passaggi seguenti.
Passaggio 4: Aggiungere il codice per visualizzare le immagini
Nel file MainPage.xaml.cs aggiungere il codice seguente alla classe MainPage.
async internal void DisplayImages(Windows.Storage.StorageFolder rootFolder)
{
// Display images from first folder in root\DCIM.
var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
var folderList = await dcimFolder.GetFoldersAsync();
var cameraFolder = folderList[0];
var fileList = await cameraFolder.GetFilesAsync();
for (int i = 0; i < fileList.Count; i++)
{
var file = (Windows.Storage.StorageFile)fileList[i];
WriteMessageText(file.Name + "\n");
DisplayImage(file, i);
}
}
async private void DisplayImage(Windows.Storage.IStorageItem file, int index)
{
try
{
var sFile = (Windows.Storage.StorageFile)file;
Windows.Storage.Streams.IRandomAccessStream imageStream =
await sFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap =
new Windows.UI.Xaml.Media.Imaging.BitmapImage();
imageBitmap.SetSource(imageStream);
var element = new Image();
element.Source = imageBitmap;
element.Height = 100;
Thickness margin = new Thickness();
margin.Top = index * 100;
element.Margin = margin;
FilesCanvas.Children.Add(element);
}
catch (Exception e)
{
WriteMessageText(e.Message + "\n");
}
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
private async void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
FilesBlock.Text = message;
else
FilesBlock.Text += message;
});
}
Passaggio 5: Aggiungere codice per copiare le immagini
Nel file MainPage.xaml.cs aggiungere il codice seguente alla classe MainPage.
async internal void CopyImages(Windows.Storage.StorageFolder rootFolder)
{
// Copy images from first folder in root\DCIM.
var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
var folderList = await dcimFolder.GetFoldersAsync();
var cameraFolder = folderList[0];
var fileList = await cameraFolder.GetFilesAsync();
try
{
var folderName = "Images " + DateTime.Now.ToString("yyyy-MM-dd HHmmss");
Windows.Storage.StorageFolder imageFolder = await
Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync(folderName);
foreach (Windows.Storage.IStorageItem file in fileList)
{
CopyImage(file, imageFolder);
}
}
catch (Exception e)
{
WriteMessageText("Failed to copy images.\n" + e.Message + "\n");
}
}
async internal void CopyImage(Windows.Storage.IStorageItem file,
Windows.Storage.StorageFolder imageFolder)
{
try
{
Windows.Storage.StorageFile sFile = (Windows.Storage.StorageFile)file;
await sFile.CopyAsync(imageFolder, sFile.Name);
WriteMessageText(sFile.Name + " copied.\n");
}
catch (Exception e)
{
WriteMessageText("Failed to copy file.\n" + e.Message + "\n");
}
}
Passaggio 6: Compilare ed eseguire l'app
- Premere F5 per compilare e distribuire l'app (in modalità di debug).
- Per eseguire l'app, inserire una scheda di memoria della fotocamera o un altro dispositivo di archiviazione da una fotocamera nel PC. Selezionare quindi una delle opzioni dell'evento di contenuto specificate nel file package.appxmanifest dall'elenco autoPlay delle opzioni. Questo codice di esempio visualizza o copia solo le immagini nella cartella DCIM di una scheda di memoria della fotocamera. Se la scheda di memoria della fotocamera archivia le immagini in una cartella AVCHD o PRIVATE\ACHD, sarà necessario aggiornare il codice di conseguenza.
Nota
Se non si dispone di una scheda di memoria della fotocamera, è possibile usare un'unità flash se contiene una cartella denominata DCIM nella radice e se la cartella DCIM ha una sottocartella che contiene immagini.
Registrarsi per un dispositivo AutoPlay
Puoi registrare le app come opzioni per gli eventi dispositivo AutoPlay. Un evento dispositivo AutoPlay viene generato quando un dispositivo viene connesso a un PC.
Qui mostriamo come identificare l'app come opzione AutoPlay quando una fotocamera è connessa a un PC. L'app viene registrata come gestore per l'evento WPD\ImageSourceAutoPlay. Si tratta di un evento comune generato dal sistema WPD (Windows Portable Device) quando le fotocamere e altri dispositivi di imaging notificano che sono imageSource usando MTP. Per altre info, vedi Dispositivi portatili Windows.
Importante: Windows.Devices.Portable.ArchiviazioneLe API del dispositivo fanno parte della famiglia di dispositivi desktop. Le app possono usare queste API solo nei dispositivi Windows 10 nella famiglia di dispositivi desktop, ad esempio PC.
Passaggio 1: Creare un altro nuovo progetto e aggiungere dichiarazioni AutoPlay
- Aprire Visual Studio e selezionare Nuovo progetto dal menu File. Nella sezione Visual C# in Windows selezionare App vuota (Windows universale). Assegnare all'app il nome AutoPlayDevice_Camera e fare clic su OK.
- Aprire il file Package.appxmanifest e selezionare la scheda Funzionalità. Selezionare la funzionalità Archiviazione rimovibile. In questo modo l'app può accedere ai dati della fotocamera come dispositivo del volume di archiviazione rimovibile.
- Nel file manifesto selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili selezionare Dispositivi AutoPlay e fare clic su Aggiungi. Selezionare il nuovo elemento Dispositivo AutoPlay aggiunto all'elenco Dichiarazioni supportate.
- Una dichiarazione dispositivo AutoPlay identifica l'app come opzione quando AutoPlay genera un evento del dispositivo per eventi noti. Nella sezione Azioni di avvio immettere i valori nella tabella seguente per la prima azione di avvio.
- Nell'elenco a discesa Dichiarazioni disponibili selezionare Associazioni tipi di file e fare clic su Aggiungi. Nelle proprietà della nuova dichiarazione Associazioni tipo di file impostare il campo Nome visualizzato su Mostra immagini dalla fotocamera e il campo Nome su camera_association1. Nella sezione Tipi di file supportati fare clic su Aggiungi nuovo (se necessario). Impostare il campo Tipo di file su .jpg. Nella sezione Tipi di file supportati fare nuovamente clic su Aggiungi nuovo. Impostare il campo Tipo di file della nuova associazione di file su .png. Per gli eventi di contenuto, AutoPlay filtra tutti i tipi di file che non sono associati in modo esplicito all'app.
- Salvare e chiudere il file manifesto.
Impostazione | Valore |
---|---|
Verbo | show |
Nome visualizzato azione | Mostra immagini |
Evento contenuto | WPD\ImageSource |
L'impostazione Nome visualizzato azione identifica la stringa visualizzata da AutoPlay per l'app. L'impostazione Verb identifica un valore passato all'applicazione per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione Verbo per determinare l'opzione selezionata da un utente per la tua app. Puoi determinare l'azione selezionata dall'utente controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. Puoi usare qualsiasi valore per l'impostazione Verbo ad eccezione di open, che è riservato. Per un esempio di uso di più verbi in una singola app, vedi Registrare il contenuto autoPlay.
Passaggio 2: Aggiungere informazioni di riferimento sull'assembly per le estensioni desktop
Le API necessarie per accedere all'archiviazione in un dispositivo portatile Windows, Windows.Devices.Portable.StorageDevice, fanno parte della famiglia di dispositivi desktop. Ciò significa che è necessario un assembly speciale per usare le API e queste chiamate funzioneranno solo su un dispositivo nella famiglia di dispositivi desktop (ad esempio un PC).
- In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti e scegliere Aggiungi riferimento.
- Espandere Windows universale e fare clic su Estensioni.
- Selezionare Estensioni desktop di Windows per la piattaforma UWP e fare clic su OK.
Passaggio 3: Aggiungere l'interfaccia utente XAML
Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione <Griglia> predefinita.
<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>
Passaggio 4: Aggiungere il codice di attivazione
Il codice in questo passaggio fa riferimento alla fotocamera come StorageDevice passando l'ID delle informazioni sul dispositivo della fotocamera al metodo FromId. L'ID informazioni sul dispositivo della fotocamera viene ottenuto eseguendo prima il cast degli argomenti dell'evento come DeviceActivatedEventArgs e quindi recuperando il valore dalla proprietà DeviceInformationId.
Nel file di progetto App.xaml.cs aggiungere la proprietà seguente alla classe 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
Il metodo ShowImages
viene aggiunto nel passaggio seguente.
Passaggio 5: Aggiungere il codice per visualizzare le informazioni sul dispositivo
È possibile ottenere informazioni sulla fotocamera dalle proprietà della classe StorageDevice. Il codice in questo passaggio visualizza il nome del dispositivo e altre informazioni all'utente durante l'esecuzione dell'app. Il codice chiama quindi i metodi GetImageList e GetThumbnail, che verranno aggiunti nel passaggio successivo, per visualizzare le anteprime delle immagini archiviate nella fotocamera
Nel file MainPage.xaml.cs aggiungere il codice seguente alla classe MainPage.
private Windows.Storage.StorageFolder rootFolder;
internal async void ShowImages(Windows.Storage.StorageFolder folder)
{
DeviceInfoTextBlock.Text = "Display Name = " + folder.DisplayName + "\n";
DeviceInfoTextBlock.Text += "Display Type = " + folder.DisplayType + "\n";
DeviceInfoTextBlock.Text += "FolderRelativeId = " + folder.FolderRelativeId + "\n";
// Reference first folder of the device as the root
rootFolder = (await folder.GetFoldersAsync())[0];
var imageList = await GetImageList(rootFolder);
foreach (Windows.Storage.StorageFile img in imageList)
{
ImagesList.Items.Add(await GetThumbnail(img));
}
}
Nota
I metodi GetImageList
e GetThumbnail
vengono aggiunti nel passaggio seguente.
Passaggio 6: Aggiungere il codice per visualizzare le immagini
Il codice in questo passaggio visualizza le anteprime delle immagini archiviate nella fotocamera. Il codice effettua chiamate asincrone alla fotocamera per ottenere l'immagine di anteprima. Tuttavia, la chiamata asincrona successiva non viene eseguita fino al completamento della chiamata asincrona precedente. In questo modo si garantisce che venga effettuata una sola richiesta alla fotocamera alla volta.
Nel file MainPage.xaml.cs aggiungere il codice seguente alla classe MainPage.
async private System.Threading.Tasks.Task<List<Windows.Storage.StorageFile>> GetImageList(Windows.Storage.StorageFolder folder)
{
var result = await folder.GetFilesAsync();
var subFolders = await folder.GetFoldersAsync();
foreach (Windows.Storage.StorageFolder f in subFolders)
result = result.Union(await GetImageList(f)).ToList();
return (from f in result orderby f.Name select f).ToList();
}
async private System.Threading.Tasks.Task<Image> GetThumbnail(Windows.Storage.StorageFile img)
{
// Get the thumbnail to display
var thumbnail = await img.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem,
100,
Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);
// Create a XAML Image object bind to on the display page
var result = new Image();
result.Height = thumbnail.OriginalHeight;
result.Width = thumbnail.OriginalWidth;
result.Name = img.Name;
var imageBitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
imageBitmap.SetSource(thumbnail);
result.Source = imageBitmap;
return result;
}
Passaggio 7: Compilare ed eseguire l'app
- Premere F5 per compilare e distribuire l'app (in modalità di debug).
- Per eseguire l'app, connettere una fotocamera al computer. Selezionare quindi l'app dall'elenco autoPlay delle opzioni.
Nota
Non tutte le fotocamere annunciano l'evento del dispositivo AutoPlay WPD\ImageSource.
Configurare l'archiviazione rimovibile
È possibile identificare un dispositivo volume come una scheda di memoria o una pen drive come un dispositivo AutoPlay quando il dispositivo del volume è connesso a un PC. Ciò è particolarmente utile quando vuoi associare un'app specifica per AutoPlay da presentare all'utente per il dispositivo del volume.
Di seguito viene illustrato come identificare il dispositivo del volume come dispositivo AutoPlay.
Per identificare il dispositivo del volume come dispositivo AutoPlay, aggiungere un file autorun.inf all'unità radice del dispositivo. Nel file autorun.inf aggiungere una chiave CustomEvent alla sezione Esecuzione automatica. Quando il dispositivo del volume si connette a un PC, AutoPlay troverà il file autorun.inf e considererà il volume come dispositivo. AutoPlay creerà un evento AutoPlay usando il nome specificato per la chiave CustomEvent. È quindi possibile creare un'app e registrare l'app come gestore per l'evento AutoPlay. Quando il dispositivo è connesso al PC, AutoPlay mostrerà l'app come gestore per il dispositivo del volume. Per altre informazioni sui file autorun.inf, vedi voci autorun.inf.
Passaggio 1: Creare un file autorun.inf
Nell'unità radice del dispositivo del volume aggiungere un file denominato autorun.inf. Aprire il file autorun.inf e aggiungere il testo seguente.
[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart
Passaggio 2: Creare un nuovo progetto e aggiungere dichiarazioni AutoPlay
- Aprire Visual Studio e selezionare Nuovo progetto dal menu File. Nella sezione Visual C# in Windows selezionare App vuota (Windows universale). Assegnare all'applicazione il nome AutoPlayCustomEvent e fare clic su OK.
- Aprire il file Package.appxmanifest e selezionare la scheda Funzionalità. Selezionare la funzionalità Archiviazione rimovibile. In questo modo l'app può accedere ai file e alle cartelle nei dispositivi di archiviazione rimovibili.
- Nel file manifesto selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili selezionare Contenuto AutoPlay e fare clic su Aggiungi. Selezionare il nuovo elemento Contenuto AutoPlay aggiunto all'elenco Dichiarazioni supportate.
Nota
In alternativa, puoi anche scegliere di aggiungere una dichiarazione di dispositivo AutoPlay per l'evento AutoPlay personalizzato.
- Nella sezione Azioni di avvio per la dichiarazione dell'evento Contenuto AutoPlay immettere i valori nella tabella seguente per la prima azione di avvio.
- Nell'elenco a discesa Dichiarazioni disponibili selezionare Associazioni tipi di file e fare clic su Aggiungi. nelle proprietà della nuova dichiarazione Associazioni tipo file impostare il campo Nome visualizzato su Show .ms Files e il campo Nome su ms_association. Nella sezione Tipi di file supportati fare clic su Aggiungi nuovo. Impostare il campo Tipo di file su .ms. Per gli eventi di contenuto, AutoPlay filtra tutti i tipi di file che non sono associati in modo esplicito all'app.
- Salvare e chiudere il file manifesto.
Impostazione | Valore |
---|---|
Verbo | show |
Nome visualizzato azione | Mostra file |
Evento contenuto | AutoPlayCustomEventQuickstart |
Il valore Evento contenuto è il testo fornito per la chiave CustomEvent nel file autorun.inf. L'impostazione Nome visualizzato azione identifica la stringa visualizzata da AutoPlay per l'app. L'impostazione Verb identifica un valore passato all'applicazione per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione Verbo per determinare l'opzione selezionata da un utente per la tua app. Puoi determinare l'azione selezionata dall'utente controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. Puoi usare qualsiasi valore per l'impostazione Verbo ad eccezione di open, che è riservato.
Passaggio 3: Aggiungere l'interfaccia utente XAML
Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione <Griglia> predefinita.
<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>
Passaggio 4: Aggiungere il codice di attivazione
Il codice in questo passaggio chiama un metodo per visualizzare le cartelle nell'unità radice del dispositivo del volume. Per gli eventi di contenuto AutoPlay, AutoPlay passa la cartella radice del dispositivo di archiviazione negli argomenti di avvio passati all'applicazione durante l'evento OnFileActivated. È possibile recuperare questa cartella dal primo elemento della proprietà File.
Nel file di progetto App.xaml.cs aggiungere la proprietà seguente alla classe 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
Il metodo DisplayFiles
viene aggiunto nel passaggio seguente.
Passaggio 5: Aggiungere codice per visualizzare le cartelle
Nel file MainPage.xaml.cs aggiungere il codice seguente alla classe MainPage.
internal async void DisplayFiles(Windows.Storage.StorageFolder folder)
{
foreach (Windows.Storage.StorageFile f in await ReadFiles(folder, ".ms"))
{
FilesBlock.Text += " " + f.Name + "\n";
}
}
internal async System.Threading.Tasks.Task<IReadOnlyList<Windows.Storage.StorageFile>>
ReadFiles(Windows.Storage.StorageFolder folder, string fileExtension)
{
var options = new Windows.Storage.Search.QueryOptions();
options.FileTypeFilter.Add(fileExtension);
var query = folder.CreateFileQueryWithOptions(options);
var files = await query.GetFilesAsync();
return files;
}
Passaggio 6: Compilare ed eseguire l'applicazione
- Premere F5 per compilare e distribuire l'app (in modalità di debug).
- Per eseguire l'app, inserire una scheda di memoria o un altro dispositivo di archiviazione nel PC. Selezionare quindi l'app dall'elenco delle opzioni del gestore AutoPlay.
Riferimento all'evento AutoPlay
Il sistema AutoPlay consente alle app di registrarsi per un'ampia gamma di eventi di arrivo del dispositivo e del volume (disco). Per registrarsi per gli eventi di contenuto AutoPlay, è necessario abilitare la funzionalità Archiviazione rimovibile nel manifesto del pacchetto. Questa tabella mostra gli eventi per cui è possibile eseguire la registrazione e quando vengono generati.
Scenario | Evento | Descrizione |
---|---|---|
Uso di foto su un Fotocamera | WPD\ImageSource | Generato per le fotocamere identificate come dispositivi portatili Windows e che offrono la funzionalità ImageSource. |
Uso della musica su un lettore audio | WPD\AudioSource | Generato per i lettori multimediali identificati come dispositivi portatili Windows che offrono la funzionalità AudioSource. |
Uso di video su una videocamera | WPD\VideoSource | Generato per le videocamere identificate come dispositivi portatili Windows e che offrono la funzionalità VideoSource. |
Accedere a un'unità flash connessa o a un disco rigido esterno | StorageOnArrival | Generato quando un'unità o un volume è connesso al PC. Se l'unità o il volume contiene una cartella DCIM, AVCHD o PRIVATE\ACHD nella radice del disco, viene generato l'evento ShowPicturesOnArrival. |
Uso di foto da archiviazione di massa (legacy) | ShowPicturesOnArrival | Generato quando un'unità o un volume contiene una cartella DCIM, AVCHD o PRIVATE\ACHD nella radice del disco. Se un utente ha abilitato Scegli cosa fare con ogni tipo di supporto nel Pannello di controllo AutoPlay, AutoPlay esaminerà un volume connesso al PC per determinare il tipo di contenuto sul disco. Quando vengono trovate immagini, viene generato ShowPicturesOnArrival. |
Ricezione di foto con condivisione prossimità (tocco e invio) | ShowPicturesOnArrival | Quando gli utenti inviano contenuti con prossimità (tocco e invio), AutoPlay esaminerà i file condivisi per determinare il tipo di contenuto. Se vengono trovate immagini, viene generato ShowPicturesOnArrival. |
Uso della musica dall'archiviazione di massa (legacy) | PlayMusicFilesOnArrival | Se un utente ha abilitato Scegli cosa fare con ogni tipo di supporto nel Pannello di controllo AutoPlay, AutoPlay esaminerà un volume connesso al PC per determinare il tipo di contenuto sul disco. Quando vengono trovati file musicali, viene generato PlayMusicFilesOnArrival. |
Ricezione di musica con condivisione prossimità (tocco e invio) | PlayMusicFilesOnArrival | Quando gli utenti inviano contenuti con prossimità (tocco e invio), AutoPlay esaminerà i file condivisi per determinare il tipo di contenuto. Se vengono trovati file musicali, viene generato PlayMusicFilesOnArrival. |
Uso di video da archiviazione di massa (legacy) | PlayVideoFilesOnArrival | Se un utente ha abilitato Scegli cosa fare con ogni tipo di supporto nel Pannello di controllo AutoPlay, AutoPlay esaminerà un volume connesso al PC per determinare il tipo di contenuto sul disco. Quando vengono trovati file video, viene generato PlayVideoFilesOnArrival. |
Ricezione di video con condivisione prossimità (tocco e invio) | PlayVideoFilesOnArrival | Quando gli utenti inviano contenuti con prossimità (tocco e invio), AutoPlay esaminerà i file condivisi per determinare il tipo di contenuto. Se vengono trovati file video, viene generato PlayVideoFilesOnArrival. |
Gestione di set misti di file da un dispositivo connesso | MixedContentOnArrival | Se un utente ha abilitato Scegli cosa fare con ogni tipo di supporto nel Pannello di controllo AutoPlay, AutoPlay esaminerà un volume connesso al PC per determinare il tipo di contenuto sul disco. Se non viene trovato alcun tipo di contenuto specifico, ad esempio immagini, viene generato MixedContentOnArrival. |
Gestione di set misti di file con condivisione prossimità (tocco e invio) | MixedContentOnArrival | Quando gli utenti inviano contenuti con prossimità (tocco e invio), AutoPlay esaminerà i file condivisi per determinare il tipo di contenuto. Se non viene trovato alcun tipo di contenuto specifico, ad esempio immagini, viene generato MixedContentOnArrival. |
Gestire video da supporti ottici | PlayDVDMovieOnArrival PlayBluRayOnArrival PlayVideoCDMovieOnArrival PlaySuperVideoCDMovieOnArrival |
Quando un disco viene inserito nell'unità ottica, AutoPlay esamina i file per determinare il tipo di contenuto. Quando vengono trovati file video, viene generato l'evento corrispondente al tipo di disco ottico. |
Gestire musica da supporti ottici | PlayCDAudioOnArrival PlayDVDAudioOnArrival |
Quando un disco viene inserito nell'unità ottica, AutoPlay esamina i file per determinare il tipo di contenuto. Quando vengono trovati file musicali, viene generato l'evento corrispondente al tipo di disco ottico. |
Riprodurre dischi avanzati | PlayEnhancedCDOnArrival PlayEnhancedDVDOnArrival |
Quando un disco viene inserito nell'unità ottica, AutoPlay esamina i file per determinare il tipo di contenuto. Quando viene trovato un disco avanzato, viene generato l'evento corrispondente al tipo di disco ottico. |
Gestire dischi ottici scrivibili | HandleCDBurningOnArrival HandleDVDBurningOnArrival HandleBDBurningOnArrival |
Quando un disco viene inserito nell'unità ottica, AutoPlay esamina i file per determinare il tipo di contenuto. Quando viene trovato un disco scrivibile, viene generato l'evento corrispondente al tipo di disco ottico. |
Gestire qualsiasi altra connessione di dispositivo o volume | UnknownContentOnArrival | Generato per tutti gli eventi nel caso in cui venga rilevato un contenuto che non corrisponde ad alcuno degli eventi di contenuto AutoPlay. Non è consigliabile usare questo evento. È consigliabile registrare l'applicazione solo per gli eventi AutoPlay specifici che può gestire. |
Puoi specificare che AutoPlay genera un evento contenuto AutoPlay personalizzato usando la voce CustomEvent nel file autorun.inf per un volume. Per altre info, vedere Voci autorun.inf.
Puoi registrare la tua app come gestore eventi Contenuto AutoPlay o Dispositivo AutoPlay aggiungendo un'estensione al file package.appxmanifest per la tua app. Se si usa Visual Studio, è possibile aggiungere una dichiarazione Contenuto AutoPlay o Dispositivo AutoPlay nella scheda Dichiarazioni. Se stai modificando direttamente il file package.appxmanifest per la tua app, aggiungi un elemento estensione al manifesto del pacchetto specificando windows.autoPlayContent o windows.autoPlayDevice come Categoria. Ad esempio, la voce seguente nel manifesto del pacchetto aggiunge un'estensione Contenuto AutoPlay per registrare l'app come gestore per l'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>