Condividi tramite


Avvio automatico con AutoPlay

Puoi usare AutoPlay per fornire la tua app come opzione quando un utente connette un dispositivo al PC. Sono inclusi dispositivi non di volume, ad esempio una fotocamera o un lettore multimediale, o dispositivi di volume, ad esempio un'unità 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 prossimità (toccando).

Annotazioni

Se sei un produttore del dispositivo e vuoi associare il tuo 'app per dispositivi di Microsoft Store come gestore AutoPlay per il dispositivo, puoi identificare l'app nei metadati del dispositivo. Per ulteriori informazioni, vedi AutoPlay per le app per dispositivi di Microsoft Store.

Iscriviti per il contenuto AutoPlay

Puoi registrare le app come opzioni per eventi di contenuto AutoPlay. gli eventi di contenuto di AutoPlay vengono generati quando un dispositivo di archiviazione, ad esempio una scheda di memoria della fotocamera, una chiavetta USB o un DVD, viene inserito nel PC. Qui viene illustrato come identificare l'app come opzione AutoPlay quando viene inserito un dispositivo del volume da una fotocamera.

In questo tutorial, hai creato un'app che visualizza file di immagine o li copia nella cartella Immagini. Hai registrato l'app 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 di contenuto AutoPlay
Condivisione della musica PlayMusicFilesOnArrival
Condivisione di video Riproduci file video all'arrivo

Quando i file vengono condivisi tramite prossimità, la proprietà Files dell'oggetto FileActivatedEventArgs contiene un riferimento a una cartella radice che include tutti i file condivisi.

Passaggio 1: Creare un nuovo progetto e aggiungere dichiarazioni AutoPlay

  1. Aprire Microsoft Visual Studio e selezionare Nuovo progetto dal menu File. Nella sezione Visual C# in Windows selezionare App vuota UWP (.NET Native). Denominare l'app AutoPlayDisplayOrCopyImages e fare clic su OK.
  2. Aprire il file Package.appxmanifest e selezionare la scheda capacità. Selezionare le funzionalità archiviazione rimovibile e libreria immagini. In questo modo l'app può accedere ai dispositivi di archiviazione rimovibili per la memoria della fotocamera e all'accesso alle immagini locali.
  3. Nel file manifesto selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili selezionare AutoPlay Content e fare clic su Aggiungi. Selezionare il nuovo elemento contenuto AutoPlay aggiunto all'elenco dichiarazioni supportate.
  4. Una dichiarazione di AutoPlay contenuto identifica l'app come opzione quando AutoPlay genera un evento di contenuto. L'evento si basa sul contenuto di un dispositivo di archiviazione, come ad esempio un DVD o una chiavetta USB. 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 Scegliere cosa fare con ogni tipo di supporto nel Pannello di controllo AutoPlay e le immagini vengono trovate nella radice del volume, AutoPlay genera l'evento ShowPicturesOnArrival. Nella sezione Avvia azioni immettere i valori riportati nella tabella 1 seguente per la prima azione di avvio.
  5. 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.
  6. Nell'elenco a discesa dichiarazioni disponibili, selezionare associazioni di tipi di file e cliccare su Aggiungi. Nella dichiarazione Proprietà della nuova dichiarazione Associazioni tipi 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 di tipo di file su .jpg. Nella sezione Tipi di file supportati 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.
  7. Salvare e chiudere il file di manifesto.

Tabella 1

Impostazione Valore
Verbo spettacolo
Nome azione visualizzato Mostra immagini
Evento di Contenuto MostraImmaginiAll'Arrivo

L'impostazione Nome visualizzato azione identifica la stringa che AutoPlay mostra per l'app. L'impostazione verbo identifica un valore passato all'app per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione verbo per determinare quale opzione un utente ha selezionato per la tua app. È possibile sapere quale opzione l'utente ha selezionato controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. È possibile usare qualsiasi valore per l'impostazione verbo, ad eccezione di aperto, riservato.

Tabella 2

Impostazione Valore
Verbo Copia
Nome azione visualizzato Copiare le immagini nella libreria
Evento di Contenuto MostraImmaginiAll'Arrivo

Passaggio 2: Aggiungere l'interfaccia utente XAML

Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione predefinita <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"/>

Passaggio 3: Aggiungere il codice di inizializzazione

Il codice in questo passaggio controlla il valore del verbo nella proprietà Verbo, che è 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 relativo alla memoria della fotocamera, AutoPlay passa la directory principale dello spazio di archiviazione della fotocamera all'app. È possibile recuperare questa cartella dal primo elemento della proprietà Files.

Aprire il file App.xaml.cs e aggiungere il codice 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);
}

Annotazioni

 I DisplayImages metodi e CopyImages vengono aggiunti nei passaggi seguenti.

Passaggio 4: Aggiungere 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

  1. Premere F5 per compilare e distribuire l'app (in modalità di debug).
  2. 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.

Annotazioni

Se non si dispone di una scheda di memoria della fotocamera, è possibile usare un'unità flash se ha una cartella denominata DCIM nella radice e se la cartella DCIM ha una sottocartella che contiene immagini.

Iscriviti a un dispositivo AutoPlay

Puoi registrare le app come opzioni per eventi di AutoPlay del dispositivo. eventi del dispositivo AutoPlay vengono generati quando un dispositivo è connesso a un PC.

Qui mostriamo come identificare la tua app come opzione AutoPlay quando una fotocamera è connessa a un PC. L'app si registra 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 fotografici notificano che sono una FonteImmagine usando MTP. Per altre informazioni, vedi Dispositivi Portatili Windows.

Importante Le API Windows.Devices.Portable.StorageDevice 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

  1. Aprire Visual Studio e selezionare Nuovo progetto dal menu file . Nella sezione Visual C# in Windows selezionare App vuota UWP (.NET Native). Assegnare all'app il nome AutoPlayDevice_Camera e fare clic su OK.
  2. Aprire il file Package.appxmanifest e selezionare la scheda Capacità. Selezionare la capacità Archiviazione rimovibile. Ciò consente all'app di accedere ai dati della fotocamera come unità di archiviazione rimovibile.
  3. Nel file manifesto, selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili, selezionare Dispositivo AutoPlay e fare clic su Aggiungi. Selezionare il nuovo elemento dispositivo AutoPlay aggiunto all'elenco dichiarazioni supportate .
  4. Una dichiarazione AutoPlay Device identifica l'app come opzione quando AutoPlay attiva un evento del dispositivo per i dispositivi noti. Nella sezione Azioni di Lancio inserire i valori nella tabella seguente per la prima azione di avvio.
  5. Nell'elenco a discesa dichiarazioni disponibili, selezionare associazioni di tipi di file e cliccare su Aggiungi. Nella dichiarazione di proprietà della nuova dichiarazione associazioni di tipi di file impostare il campo nome visualizzato su Mostra immagini da fotocamera e il campo Nome su camera_association1. Nella sezione Tipi di File Supportati, fare clic su Aggiungi Nuovo (se necessario). Impostare il campo di tipo di file su .jpg. Nella sezione Tipi di file supportati, clicca nuovamente 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.
  6. Salvare e chiudere il file di manifesto.
Impostazione Valore
Verbo spettacolo
Nome azione visualizzato Mostra immagini
Evento di Contenuto WPD\ImageSource

L'impostazione Nome visualizzato azione identifica la stringa che AutoPlay mostra per l'app. L'impostazione verbo identifica un valore passato all'app per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione verbo per determinare quale opzione un utente ha selezionato per la tua app. È possibile sapere quale opzione l'utente ha selezionato controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. È possibile usare qualsiasi valore per l'impostazione verbo, ad eccezione di aperto, riservato. Per un esempio di come utilizzare più verbi in un'unica app, vedere Registrazione contenuti 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).

  1. In Esplora Soluzioni , fare clic con il pulsante destro del mouse su Riferimenti e quindi Aggiungi riferimento....
  2. Espandi Windows universale e fai clic su Estensioni .
  3. Seleziona quindi Estensioni desktop di Windows per la UWP e cliccare su OK.

Passaggio 3: Aggiungere l'interfaccia utente XAML

Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione predefinita <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>

Passaggio 4: Aggiungere il codice di attivazione

Il codice in questo passaggio fa riferimento alla fotocamera come StorageDevice passando l'ID delle informazioni della fotocamera del dispositivo al metodo FromId. L'ID delle informazioni sul dispositivo della fotocamera viene ottenuto effettuando innanzitutto il cast degli argomenti dell'evento come DeviceActivatedEventArgse successivamente ottenendo il valore dalla proprietà DeviceInformationId.

Aprire il file App.xaml.cs e aggiungere il codice 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);
}

Annotazioni

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

Annotazioni

I metodi GetImageList e GetThumbnail vengono aggiunti nel passaggio seguente.

Passaggio 6: Aggiungere 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

  1. Premere F5 per compilare e distribuire l'app (in modalità di debug).
  2. Per eseguire l'app, connettere una fotocamera al computer. Quindi selezionare l'app dall'elenco AutoPlay delle opzioni.

Annotazioni

Non tutte le fotocamere annunciano il WPD\ImageSource evento del dispositivo AutoPlay.

Configurare l'archiviazione rimovibile

È possibile identificare un dispositivo del volume, ad esempio una scheda di memoria o un'unità flash, come dispositivo AutoPlay quando esso è connesso a un PC. Ciò è particolarmente utile quando vuoi associare un'app specifica per AutoPlay da presentare all'utente per il dispositivo del volume.

Per identificare il tuo dispositivo del volume come dispositivo AutoPlay, segui questi passaggi.

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 AutoRun. Quando il dispositivo del volume si connette a un PC, AutoPlay troverà il file autorun.inf e lo considererà come un dispositivo. AutoPlay creerà un evento AutoPlay utilizzando il nome che hai fornito 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 ulteriori informazioni sui file autorun.inf, consulta le voci autorun.inf .

Passaggio 1: Creare un file autorun.inf

Nella directory principale del dispositivo di volume, aggiungi 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

  1. Aprire Visual Studio e selezionare Nuovo progetto dal menu file . Nella sezione Visual C# in Windows selezionare App vuota UWP (.NET Native). Denominare l'applicazione AutoPlayCustomEvent e fare clic su OK.

  2. Aprire il file Package.appxmanifest e selezionare la scheda Capacità. Selezionare la capacità Archiviazione rimovibile. In questo modo l'app può accedere ai file e alle cartelle nei dispositivi di archiviazione rimovibili.

  3. Nel file manifesto selezionare la scheda Dichiarazioni. Nell'elenco a discesa Dichiarazioni disponibili selezionare AutoPlay Content e fare clic su Aggiungi. Selezionare il nuovo elemento contenuto AutoPlay aggiunto all'elenco dichiarazioni supportate.

    Annotazioni

    In alternativa, puoi anche scegliere di aggiungere una dichiarazione di dispositivo AutoPlay per il tuo evento AutoPlay personalizzato.

  4. Nella sezione azioni di avvio per la dichiarazione di evento contenuto AutoPlay, immettere i valori nella tabella seguente per la prima azione di avvio.

  5. Nell'elenco a discesa dichiarazioni disponibili, selezionare associazioni di tipi di file e cliccare su Aggiungi. Nella dichiarazione Proprietà della nuova associazioni di tipi di file impostare il campo nome visualizzato su Mostra file ms 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.

  6. Salvare e chiudere il file di manifesto.

Impostazione Valore
Verbo spettacolo
Nome azione visualizzato Mostra file
Evento di Contenuto AvvioRapidoEventoPersonalizzatoAutoPlay

Il valore evento contenuto è il testo fornito per la chiave CustomEvent nel file autorun.inf. L'impostazione Nome visualizzato azione identifica la stringa che AutoPlay mostra per l'app. L'impostazione verbo identifica un valore passato all'app per l'opzione selezionata. Puoi specificare più azioni di avvio per un evento AutoPlay e usare l'impostazione verbo per determinare quale opzione un utente ha selezionato per la tua app. È possibile sapere quale opzione l'utente ha selezionato controllando la proprietà verbo degli argomenti dell'evento di avvio passati alla tua app. È possibile usare qualsiasi valore per l'impostazione verbo, ad eccezione di aperto, riservato.

Passaggio 3: Aggiungere l'interfaccia utente XAML

Aprire il file MainPage.xaml e aggiungere il codice XAML seguente alla sezione predefinita <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>

Passaggio 4: Aggiungere il codice di attivazione

Il codice in questo passaggio chiama un metodo per visualizzare le cartelle nella directory principale del tuo dispositivo di archiviazione. 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à Files.

Aprire il file App.xaml.cs e aggiungere il codice 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);
}

Annotazioni

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

  1. Premere F5 per compilare e distribuire l'app (in modalità di debug).
  2. 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 di AutoPlay consente alle app di registrarsi per un'ampia gamma di eventi di arrivo del dispositivo e del volume (disco). Per registrarsi per eventi di contenuto AutoPlay, è necessario abilitare la funzionalità di archiviazione rimovibile nel manifesto del pacchetto. Questa tabella mostra gli eventi per cui è possibile eseguire la registrazione e quando vengono generati.

Sceneggiatura Evento Descrizione
Uso di foto su una fotocamera WPD\ImageSource Generato per le fotocamere che sono 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 e che offrono la funzionalità AudioSource.
Uso di video su una videocamera WPD\VideoSource Generato per le videocamere identificate come dispositivi portatili Windows che dispongono della funzionalità VideoSource.
Accedere a un'unità flash connessa o a un disco rigido esterno ConservazioneAll'Arrivo Generato quando un dispositivo di archiviazione 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 attivato l'evento ShowPicturesOnArrival.
Uso di foto da archiviazione di massa (legacy) MostraImmaginiAll'arrivo Generato quando un'unità o un volume contiene una cartella DCIM, AVCHD o PRIVATE\ACHD nella radice del disco. Se un utente ha abilitato Scegliere 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 attivato ShowPicturesOnArrival.
Ricezione di foto con la condivisione di prossimità (tocco e invio) MostraImmaginiAll'arrivo 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 attivato ShowPicturesOnArrival.
Uso della musica dall'archiviazione di massa (legacy) PlayMusicFilesOnArrival Se un utente ha abilitato Scegli cosa fare per ciascun tipo di supporto nel Pannello di controllo di AutoPlay, AutoPlay esaminerà un'unità collegata al PC per determinare il tipo di contenuto sul disco. Quando vengono trovati file musicali, PlayMusicFilesOnArrival viene attivato.
Ricevere musica tramite la Condivisione di Prossimità (tocca e invia) 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 attivato PlayMusicFilesOnArrival.
Uso di video dalla memoria di massa (legacy) RiproduciFileVideoAllArrivo Se un utente ha abilitato Scegli cosa fare per ciascun tipo di supporto nel Pannello di controllo di AutoPlay, AutoPlay esaminerà un'unità collegata al PC per determinare il tipo di contenuto sul disco. Quando i file video vengono trovati, si attiva PlayVideoFilesOnArrival.
Ricevere video con condivisione di prossimità (tocca e invia) RiproduciFileVideoAllArrivo 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, PlayVideoFilesOnArrival viene generato.
Gestione di insiemi misti di file da un dispositivo connesso MixedContentOnArrival Se un utente ha abilitato Scegli cosa fare per ciascun tipo di supporto nel Pannello di controllo di AutoPlay, AutoPlay esaminerà un'unità collegata al PC per determinare il tipo di contenuto sul disco. Se non si trova alcun tipo di contenuto specifico, ad esempio immagini, viene sollevato MixedContentOnArrival.
Gestione di set misti di file con la Condivisione in Prossimità (tocca e invia) MixedContentOnArrival Quando gli utenti inviano contenuti con prossimità (tocco e invio), AutoPlay esaminerà i file condivisi per determinare il tipo di contenuto. Se non si trova alcun tipo di contenuto specifico, ad esempio immagini, viene sollevato MixedContentOnArrival.
Gestire video da supporti ottici PlayMOVIEOnArrival
Play EseguiRayOnArrival
PlayVideoCDMovieOnArrival
RiproduciFilmatoSuperVideoCDAll'Arrivo
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 RiproduciCDAudioAllArrivo
RiproduciAudioDVDAll'Arrivo
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
PlayEnhanced AVANTIOnArrival
Quando un disco viene inserito nell'unità ottica, AutoPlay esamina i file per determinare il tipo di contenuto. Quando viene trovato un disco migliorato, viene generato l'evento corrispondente al tipo di disco ottico.
Gestire dischi ottici scrivibili HandleCDBurningOnArrival
HandleMasterizzazioneDVDOnArrival
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.
Gestisci qualsiasi altra connessione di dispositivo o volume UnknownContentOnArrival Generato per tutti gli eventi quando viene rilevato un contenuto che non corrisponde a nessuno degli eventi di contenuto AutoPlay. L'uso di questo evento non è consigliato. È consigliabile registrare l'applicazione solo per gli eventi AutoPlay specifici che può gestire.

Puoi specificare che AutoPlay solleva un evento di contenuto AutoPlay personalizzato utilizzando la voce CustomEvent nel file autorun.inf per un volume. Per ulteriori informazioni, vedi Voci autorun.inf.

Puoi registrare la tua app come gestore di eventi di contenuti AutoPlay o dispositivi AutoPlay aggiungendo un'estensione al file package.appxmanifest della tua app. Se si usa Visual Studio, è possibile aggiungere una dichiarazione di contenuto AutoPlay o dispositivo AutoPlay nella scheda dichiarazioni di . Se modifichi direttamente il file package.appxmanifest per la tua app, aggiungi un elemento extension al manifesto del pacchetto che specifica windows.autoPlayContent o windows.autoPlayDevice come Category. 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>