Schnellstart: Registrieren einer App für Inhalt für die automatische Wiedergabe
Language: HTML | XAML

Schnellstart: Registrieren einer App für Inhalt für die automatische Wiedergabe (XAML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Sie können Apps als Optionen für Inhaltsereignisse für die automatische Wiedergabe registrieren. Inhaltsereignisse für die automatische Wiedergabe werden ausgelöst, wenn ein Volumegerät wie etwa die Speicherkarte einer Kamera, ein USB-Speicherstick oder eine DVD in den PC eingelegt bzw. an den PC angeschlossen wird.

Roadmap: Wie hängt dieses Thema mit anderen zusammen? Informationen finden Sie unter:

Dieses Beispiel zeigt, wie Sie eine App als Option für die automatische Wiedergabe identifizieren, wenn ein Volumegerät einer Kamera angeschlossen wird.

Ziel: Erstellen Sie eine App zum Behandeln eines Inhaltsereignisses für die automatische Wiedergabe.

Voraussetzungen

Microsoft Visual Studio

Anweisungen

1. Erstellen eines neuen Projekts und Hinzufügen von Deklarationen für die automatische Wiedergabe

  1. Öffnen Sie Visual Studio, und wählen Sie im Menü Datei die Option Neues Projekt aus. Wählen Sie im Abschnitt Visual C# die Option Windows Store aus. Geben Sie für die App den Namen AutoPlayDisplayOrCopyImages ein, und klicken Sie anschließend auf OK.
  2. Öffnen Sie die Datei Package.appxmanifest, und klicken Sie auf die Registerkarte Funktionen. Wählen Sie die Funktionen Wechselmedien und Bildbibliothek aus. Dadurch erhält die App Zugriff auf Wechselmedien für Kameraspeicher und lokale Bilder.
  3. Klicken Sie in der Manifestdatei auf die Registerkarte Deklarationen. Wählen Sie in der Dropdownliste Verfügbare Deklarationen die Option Inhalt automatisch wiedergeben aus, und klicken Sie anschließend auf Hinzufügen. Wählen Sie das neue Element vom Typ Inhalt automatisch wiedergeben aus, das der Liste Unterstützte Deklarationen hinzugefügt wurde.
  4. Eine Deklaration vom Typ Inhalt automatisch wiedergeben identifiziert Ihre App als Option, wenn die automatische Wiedergabe ein Inhaltsereignis auslöst. Das Ereignis basiert auf dem Inhalt eines Volumegeräts (beispielsweise eine DVD oder ein Speicherstick). Für die automatische Wiedergabe wird der Inhalt des Volumegeräts ermittelt und festgelegt, welches Inhaltsereignis ausgelöst wird. Das ShowPicturesOnArrival-Ereignis wird von der automatischen Wiedergabe ausgelöst, wenn das Stammverzeichnis des Volumes den Ordner "/DCIM", "/AVCHD" oder "/PRIVATE\ACHD" enthält oder wenn die Option Gewünschte Aktion für jeden Medientyp auswählen vom Benutzer in der Systemsteuerungsoption "Automatische Wiedergabe" aktiviert wurde und Bilder im Stammverzeichnis des Volumes gefunden werden.

    Geben Sie im Abschnitt Startaktionen die folgenden Werte für die Aktion beim ersten Start an:

    EinstellungWert
    Verbshow
    AktionsanzeigenameBilder anzeigen
    InhaltsereignisShowPicturesOnArrival

     

    Die Einstellung Anzeigename der Aktion dient zum Angeben der Zeichenfolge, die die automatische Wiedergabe für Ihre App anzeigt. Die Einstellung Verb dient zum Angeben eines Werts, der für die ausgewählte Option an Ihre App übergeben wird. Sie können mehrere Startaktionen für Ereignisse der automatischen Wiedergabe angeben und mit der Einstellung Verb ermitteln, welche Option ein Benutzer für Ihre App ausgewählt hat. Für welche Option sich der Benutzer entschieden hat, erfahren Sie durch Überprüfen der verb-Eigenschaft der an die App übergebenen Startereignisargumente. Für die Einstellung Verb können Sie einen beliebigen Wert verwenden. Einzige Ausnahme ist open: Dieser Wert ist reserviert.

  5. Klicken Sie im Abschnitt Startaktionen für das Element vom Typ Inhalt automatisch wiedergeben auf Neu hinzufügen, um eine zweite Startaktion hinzuzufügen. Geben Sie die folgenden Werte für die Aktion beim zweiten Start an:
    EinstellungWert
    Verbcopy
    AktionsanzeigenameBilder in die Bibliothek kopieren
    InhaltsereignisShowPicturesOnArrival

     

  6. Wählen Sie in der Dropdownliste Verfügbare Deklarationen die Option Dateitypzuordnungen aus, und klicken Sie anschließend auf Hinzufügen. Legen Sie in den Eigenschaften der neuen Deklaration vom Typ Dateitypzuordnungen das Feld Anzeigename auf AutoPlay Copy or Show Images und das Feld Name auf image_association1 fest. Klicken Sie im Abschnitt Unterstützte Dateitypen auf Neu hinzufügen. Legen Sie im Feld Dateityp die Option .jpg fest. Legen Sie im Abschnitt Unterstützte Dateitypen das Feld Dateityp der neuen Dateizuordnung auf .png fest. Für Inhaltsereignisse filtert AutoPlay Dateitypen heraus, die nicht explizit Ihrer App zugeordnet sind.
  7. Speichern und schließen Sie die Manifestdatei.

2. Hinzufügen der XAML-UI

  • Öffnen Sie die Datei MainPage.xaml, und fügen Sie dem standardmäßigen <Grid>-Abschnitt den folgenden XAML-Code hinzu.
    
    <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"/>
    
    
    

3. Hinzufügen von Initialisierungscode

Der Code in diesem Schritt überprüft den Wert des Verbs in der Verb-Eigenschaft. Dabei handelt es sich um eines der Startargumente, die beim OnFileActivated-Ereignis an die App übergeben werden. Anschließend ruft der Code entsprechend der vom Benutzer ausgewählten Option eine Methode auf. Beim Kameraspeicherereignis wird bei der automatischen Wiedergabe der Stammordner des Kameraspeichers an die App übergeben. Sie können diesen Ordner aus dem ersten Element der Files-Eigenschaft abrufen.

  1. Öffnen Sie die Datei App.xaml.cs oder App.xaml.vb, und fügen Sie der App-Klasse den folgenden Code hinzu.
    
    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);
    }
    
    
    
  2. Speichern und schließen Sie die Datei App.xaml.cs.

4. Hinzufügen von Code zum Anzeigen von Bildern

  • Fügen Sie in der Datei MainPage.xaml.cs oder MainPage.xaml.vb folgenden Code zur MainPage-Klasse hinzu.
    
    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 void WriteMessageText(string message, bool overwrite = false)
    {
        messageDispatcher.InvokeAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
            (s, a) =>
            {
                if (overwrite)
                    FilesBlock.Text = message;
                else
                    FilesBlock.Text += message;
            }, this, null);
    }
    
    
    

5. Hinzufügen von Code zum Kopieren von Bildern

  • Fügen Sie in der Datei MainPage.xaml.cs oder MainPage.xaml.vb folgenden Code zur MainPage-Klasse hinzu.
    
    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");
        }
    }
    
    
    

6. Erstellen und Ausführen der App

  1. Drücken Sie F5, um die App zu erstellen und bereitzustellen (im Debugmodus).
  2. Legen Sie eine Kameraspeicherkarte oder ein anderes Speichergerät einer Kamera in Ihren PC ein, um die App auszuführen. Wählen Sie dann in der Liste mit den Optionen für die automatische Wiedergabe eine der Inhaltsereignisoptionen aus, die Sie in der Datei package.appxmanifest angegeben haben. Dieser Beispielcode blendet Bilder im DCIM-Ordner auf der Speicherkarte einer Kamera nur ein oder kopiert diese. Wenn die Speicherkarte Ihrer Kamera Bilder in "AVCHD" oder "PRIVATE\ACHD" speichert, müssen Sie den Code entsprechend ändern.
    Hinweis  Falls Sie nicht über eine Kameraspeicherkarte verfügen, können Sie einen Speicherstick verwenden, sofern dieser im Stammverzeichnis einen Ordner mit dem Namen DCIM und der Ordner "DCIM" wiederum einen Unterordner mit Bildern enthält.
     

Zusammenfassung und nächste Schritte

In diesem Lernprogramm haben Sie eine App erstellt, die Bilddateien anzeigt oder in "Bilder" kopiert. Sie haben die App für das ShowPicturesOnArrival-Inhaltsereignis von AutoPlay registriert.

Die automatische Wiedergabe löst Inhaltsereignisse für Inhalte aus, die mittels Näherung (Koppeln) zwischen PCs ausgetauscht werden. Sie können die Schritte und den Code aus dieser Schnellstartanleitung auch für Dateien verwenden, die mittels Näherung zwischen PCs geteilt werden. Die folgende Tabelle enthält die Inhaltsereignisse für die automatische Wiedergabe, die Sie verwenden können, um Inhalte mithilfe der Näherungsfunktion zu teilen.

AktionInhaltsereignis für die automatische Wiedergabe
Teilen von MusikPlayMusicFilesOnArrival
Teilen von VideosPlayVideoFilesOnArrival

 

Wenn Dateien mithilfe der Näherungsfunktion geteilt werden, enthält die Files-Eigenschaft des FileActivatedEventArgs-Objekts einen Verweis auf einen Stammordner mit allen freigegebenen Dateien.

Verwandte Themen

Automatischer Start mit automatischer Wiedergabe
Roadmap für Windows-Runtime-Apps mit C# oder Visual Basic

 

 

Anzeigen:
© 2017 Microsoft