Peluncuran otomatis dengan AutoPlay

Anda dapat menggunakan AutoPlay untuk menyediakan aplikasi Anda sebagai opsi saat pengguna menyambungkan perangkat ke PC mereka. Ini termasuk perangkat non-volume seperti kamera atau pemutar media, atau perangkat volume seperti drive jempol USB, kartu SD, atau DVD. Anda juga dapat menggunakan AutoPlay untuk menawarkan aplikasi Anda sebagai opsi saat pengguna berbagi file di antara dua PC dengan menggunakan kedekatan (mengetuk).

Catatan

Jika Anda adalah produsen perangkat dan ingin mengaitkan aplikasi perangkat Microsoft Store sebagai penangan AutoPlay untuk perangkat, Anda dapat mengidentifikasi aplikasi tersebut dalam metadata perangkat. Untuk informasi selengkapnya, lihat AutoPlay untuk aplikasi perangkat Microsoft Store.

Daftar untuk konten AutoPlay

Anda dapat mendaftarkan aplikasi sebagai opsi untuk peristiwa konten AutoPlay . Peristiwa konten Pemutaran Otomatis dinaikkan ketika perangkat volume seperti kartu memori kamera, drive jempol, atau DVD dimasukkan ke PC. Di sini kami menunjukkan cara mengidentifikasi aplikasi Anda sebagai opsi AutoPlay saat perangkat volume dari kamera disisipkan.

Dalam tutorial ini, Anda membuat aplikasi yang menampilkan file gambar atau menyalinnya ke Gambar. Anda mendaftarkan aplikasi untuk peristiwa konten AutoPlay ShowPicturesOnArrival .

AutoPlay juga menaikkan peristiwa konten untuk konten yang dibagikan antar PC menggunakan kedekatan (mengetuk). Anda dapat menggunakan langkah-langkah dan kode di bagian ini untuk menangani file yang dibagikan antara PC yang menggunakan kedekatan. Tabel berikut mencantumkan peristiwa konten AutoPlay yang tersedia untuk berbagi konten dengan menggunakan kedekatan.

Perbuatan Kejadian konten Pemutaran Otomatis
Berbagi musik PlayMusicFilesOnArrival
Berbagi video PlayVideoFilesOnArrival

Ketika file dibagikan dengan menggunakan kedekatan, properti File dari objek FileActivatedEventArgs berisi referensi ke folder akar yang berisi semua file bersama.

Langkah 1: Buat proyek baru dan tambahkan deklarasi AutoPlay

  1. Buka Microsoft Visual Studio dan pilih Proyek Baru dari menu File. Di bagian Visual C# , di bawah Windows, pilih Aplikasi Kosong (Universal Windows). Beri nama aplikasi AutoPlayDisplayOrCopyImages dan klik OK.
  2. Buka file Package.appxmanifest dan pilih tab Kemampuan. Pilih kemampuan Pustaka Penyimpanan dan Gambar yang Dapat Dilepas. Ini memberi aplikasi akses ke perangkat penyimpanan yang dapat dilepas untuk memori kamera, dan akses ke gambar lokal.
  3. Di file manifes, pilih tab Deklarasi . Di daftar drop-down Deklarasi yang Tersedia, pilih AutoPlay Content dan klik Tambahkan. Pilih item Konten AutoPlay baru yang ditambahkan ke daftar Deklarasi yang Didukung.
  4. Deklarasi Konten AutoPlay mengidentifikasi aplikasi Anda sebagai opsi saat AutoPlay menaikkan peristiwa konten. Kejadian ini didasarkan pada konten perangkat volume seperti DVD atau drive jempol. AutoPlay memeriksa konten perangkat volume dan menentukan peristiwa konten mana yang akan dinaikkan. Jika akar volume berisi folder DCIM, AVCHD, atau PRIVATE\ACHD, atau jika pengguna telah mengaktifkan Pilih apa yang harus dilakukan dengan setiap jenis media di Panel Kontrol AutoPlay dan gambar ditemukan di akar volume, maka AutoPlay menaikkan peristiwa ShowPicturesOnArrival. Di bagian Luncurkan Tindakan , masukkan nilai dari Tabel 1 di bawah ini untuk tindakan peluncuran pertama.
  5. Di bagian Luncurkan Tindakan untuk item Konten AutoPlay, klik Tambahkan Baru untuk menambahkan tindakan peluncuran kedua. Masukkan nilai dalam Tabel 2 di bawah ini untuk tindakan peluncuran kedua.
  6. Di daftar drop-down Deklarasi yang Tersedia, pilih Asosiasi Tipe File dan klik Tambahkan. Di properti deklarasi Asosiasi Tipe File baru, atur bidang Nama Tampilan ke Salin AutoPlay atau Tampilkan Gambar dan bidang Nama ke image_association1. Di bagian Jenis File yang Didukung, klik Tambahkan Baru. Atur bidang Tipe File ke .jpg. Di bagian Jenis File yang Didukung, atur bidang Tipe File dari asosiasi file baru ke .png. Untuk peristiwa konten, AutoPlay memfilter jenis file apa pun yang tidak secara eksplisit terkait dengan aplikasi Anda.
  7. Simpan dan tutup file manifes.

Tabel 1

Pengaturan Nilai
Kata kerja show
Nama Tampilan Tindakan Perlihatkan Gambar
Peristiwa Konten ShowPicturesOnArrival

Pengaturan Nama Tampilan Tindakan mengidentifikasi string yang ditampilkan AutoPlay untuk aplikasi Anda. Pengaturan Kata Kerja mengidentifikasi nilai yang diteruskan ke aplikasi Anda untuk opsi yang dipilih. Anda dapat menentukan beberapa tindakan peluncuran untuk peristiwa AutoPlay dan menggunakan pengaturan Kata Kerja untuk menentukan opsi mana yang telah dipilih pengguna untuk aplikasi Anda. Anda dapat mengetahui opsi mana yang dipilih pengguna dengan memeriksa properti kata kerja argumen peristiwa startup yang diteruskan ke aplikasi Anda. Anda dapat menggunakan nilai apa pun untuk pengaturan Kata Kerja kecuali, terbuka, yang dicadangkan.

Tabel 2

Pengaturan Nilai
Kata kerja menyalin
Nama Tampilan Tindakan Salin Gambar ke Dalam Pustaka
Peristiwa Konten ShowPicturesOnArrival

Langkah 2: Tambahkan UI XAML

Buka file MainPage.xaml dan tambahkan XAML berikut ke bagian Grid> default<.

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

Langkah 3: Tambahkan kode inisialisasi

Kode dalam langkah ini memeriksa nilai kata kerja di properti Kata Kerja , yang merupakan salah satu argumen startup yang diteruskan ke aplikasi selama peristiwa OnFileActivated . Kode kemudian memanggil metode yang terkait dengan opsi yang dipilih pengguna. Untuk peristiwa memori kamera, AutoPlay meneruskan folder akar penyimpanan kamera ke aplikasi. Anda dapat mengambil folder ini dari elemen pertama properti File .

Buka file App.xaml.cs dan tambahkan kode berikut ke kelas Aplikasi .

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

Perhatikan Metode DisplayImages dan CopyImages ditambahkan dalam langkah-langkah berikut.

Langkah 4: Tambahkan kode untuk menampilkan gambar

Dalam file MainPage.xaml.cs tambahkan kode berikut ke kelas 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;
        });
}

Langkah 5: Tambahkan kode untuk menyalin gambar

Dalam file MainPage.xaml.cs tambahkan kode berikut ke kelas 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");
    }
}

Langkah 6: Membangun dan menjalankan aplikasi

  1. Tekan F5 untuk membangun dan menyebarkan aplikasi (dalam mode debug).
  2. Untuk menjalankan aplikasi Anda, masukkan kartu memori kamera atau perangkat penyimpanan lain dari kamera ke PC Anda. Kemudian, pilih salah satu opsi peristiwa konten yang Anda tentukan dalam file package.appxmanifest dari daftar opsi AutoPlay. Kode sampel ini hanya menampilkan atau menyalin gambar di folder DCIM kartu memori kamera. Jika kartu memori kamera Anda menyimpan gambar di folder AVCHD atau PRIVATE\ACHD, Anda harus memperbarui kode yang sesuai.

Catatan

Jika Anda tidak memiliki kartu memori kamera, Anda dapat menggunakan flash drive jika memiliki folder bernama DCIM di root dan jika folder DCIM memiliki subfolder yang berisi gambar.

Mendaftar untuk perangkat AutoPlay

Anda dapat mendaftarkan aplikasi sebagai opsi untuk peristiwa perangkat AutoPlay . Peristiwa perangkat AutoPlay dinaikkan saat perangkat tersambung ke PC.

Di sini kami menunjukkan cara mengidentifikasi aplikasi Anda sebagai opsi AutoPlay saat kamera terhubung ke PC. Aplikasi ini mendaftar sebagai handler untuk peristiwa WPD\ImageSourceAutoPlay . Ini adalah peristiwa umum yang dinaikkan sistem Windows Portable Device (WPD) ketika kamera dan perangkat pencitraan lainnya memberi tahu bahwa mereka adalah ImageSource menggunakan MTP. Untuk informasi selengkapnya, lihat Perangkat Portabel Windows.

Penting Windows.Devices.Portable.StorageDeviceAPI adalah bagian dari keluarga perangkat desktop. Aplikasi hanya dapat menggunakan API ini pada perangkat Windows 10 dalam keluarga perangkat desktop, seperti PC.

Langkah 1: Buat proyek baru lain dan tambahkan deklarasi AutoPlay

  1. Buka Visual Studio dan pilih Proyek Baru dari menu File. Di bagian Visual C# , di bawah Windows, pilih Aplikasi Kosong (Universal Windows). Beri nama aplikasi AutoPlayDevice_Kamera dan klik OK.
  2. Buka file Package.appxmanifest dan pilih tab Kemampuan . Pilih kemampuan Penyimpanan yang Dapat Dilepas. Ini memberi aplikasi akses ke data pada kamera sebagai perangkat volume penyimpanan yang dapat dilepas.
  3. Di file manifes, pilih tab Deklarasi . Di daftar drop-down Deklarasi yang Tersedia, pilih Perangkat AutoPlay dan klik Tambahkan. Pilih item Perangkat AutoPlay baru yang ditambahkan ke daftar Deklarasi yang Didukung.
  4. Deklarasi Perangkat AutoPlay mengidentifikasi aplikasi Anda sebagai opsi saat AutoPlay menaikkan peristiwa perangkat untuk peristiwa yang diketahui. Di bagian Luncurkan Tindakan , masukkan nilai dalam tabel di bawah ini untuk tindakan peluncuran pertama.
  5. Di daftar drop-down Deklarasi yang Tersedia, pilih Asosiasi Tipe File dan klik Tambahkan. Di properti deklarasi Asosiasi Tipe File baru, atur bidang Nama Tampilan untuk Menampilkan Gambar dari Kamera dan bidang Nama ke camera_association1. Di bagian Jenis File yang Didukung, klik Tambahkan Baru (jika diperlukan). Atur bidang Tipe File ke .jpg. Di bagian Tipe File yang Didukung, klik Tambahkan Baru lagi. Atur bidang Tipe File asosiasi file baru ke .png. Untuk peristiwa konten, AutoPlay memfilter jenis file apa pun yang tidak secara eksplisit terkait dengan aplikasi Anda.
  6. Simpan dan tutup file manifes.
Pengaturan Nilai
Kata kerja show
Nama Tampilan Tindakan Perlihatkan Gambar
Peristiwa Konten WPD\ImageSource

Pengaturan Nama Tampilan Tindakan mengidentifikasi string yang ditampilkan AutoPlay untuk aplikasi Anda. Pengaturan Kata Kerja mengidentifikasi nilai yang diteruskan ke aplikasi Anda untuk opsi yang dipilih. Anda dapat menentukan beberapa tindakan peluncuran untuk peristiwa AutoPlay dan menggunakan pengaturan Kata Kerja untuk menentukan opsi mana yang telah dipilih pengguna untuk aplikasi Anda. Anda dapat mengetahui opsi mana yang dipilih pengguna dengan memeriksa properti kata kerja argumen peristiwa startup yang diteruskan ke aplikasi Anda. Anda dapat menggunakan nilai apa pun untuk pengaturan Kata Kerja kecuali, terbuka, yang dicadangkan. Untuk contoh penggunaan beberapa kata kerja dalam satu aplikasi, lihat Mendaftar untuk konten AutoPlay.

Langkah 2: Menambahkan referensi perakitan untuk ekstensi desktop

API yang diperlukan untuk mengakses penyimpanan pada Windows Portable Device, Windows.Devices.Portable.StorageDevice, adalah bagian dari keluarga perangkat desktop. Ini berarti rakitan khusus diperlukan untuk menggunakan API dan panggilan tersebut hanya akan berfungsi pada perangkat dalam keluarga perangkat desktop (seperti PC).

  1. Di Penjelajah Solusi, klik kanan referensilalu Tambahkan Referensi....
  2. Perluas Universal Windows dan klik Ekstensi.
  3. Lalu pilih Ekstensi Desktop Windows untuk UWP dan klik OK.

Langkah 3: Tambahkan UI XAML

Buka file MainPage.xaml dan tambahkan XAML berikut ke bagian Grid> default<.

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

Langkah 4: Tambahkan kode aktivasi

Kode dalam langkah ini mereferensikan kamera sebagai StorageDevice dengan meneruskan Id informasi perangkat kamera ke metode FromId. Id informasi perangkat kamera diperoleh dengan terlebih dahulu mentransmisikan argumen peristiwa sebagai DeviceActivatedEventArgs, lalu mendapatkan nilai dari properti DeviceInformationId.

Buka file App.xaml.cs dan tambahkan kode berikut ke kelas Aplikasi .

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

Catatan

Metode ShowImages ini ditambahkan pada langkah berikut.

Langkah 5: Tambahkan kode untuk menampilkan informasi perangkat

Anda dapat memperoleh informasi tentang kamera dari properti kelas StorageDevice. Kode dalam langkah ini menampilkan nama perangkat dan info lain kepada pengguna saat aplikasi berjalan. Kode kemudian memanggil metode GetImageList dan GetThumbnail, yang akan Anda tambahkan di langkah berikutnya, untuk menampilkan gambar mini gambar yang disimpan di kamera

Dalam file MainPage.xaml.cs, tambahkan kode berikut ke kelas 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));
    }
}

Catatan

Metode GetImageList dan GetThumbnail ditambahkan pada langkah berikut.

Langkah 6: Tambahkan kode untuk menampilkan gambar

Kode dalam langkah ini menampilkan gambar mini gambar yang disimpan di kamera. Kode melakukan panggilan asinkron ke kamera untuk mendapatkan gambar mini. Namun, panggilan asinkron berikutnya tidak terjadi sampai panggilan asinkron sebelumnya selesai. Ini memastikan bahwa hanya satu permintaan yang dibuat ke kamera pada satu waktu.

Dalam file MainPage.xaml.cs, tambahkan kode berikut ke kelas 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;
}

Langkah 7: Membangun dan menjalankan aplikasi

  1. Tekan F5 untuk membangun dan menyebarkan aplikasi (dalam mode debug).
  2. Untuk menjalankan aplikasi Anda, sambungkan kamera ke komputer Anda. Kemudian pilih aplikasi dari daftar opsi AutoPlay.

Catatan

Tidak semua kamera mengiklankan untuk peristiwa perangkat WPD\ImageSource AutoPlay.

Mengonfigurasi penyimpanan yang dapat dilepas

Anda dapat mengidentifikasi perangkat volume seperti kartu memori atau drive jempol sebagai perangkat AutoPlay saat perangkat volume terhubung ke PC. Ini sangat berguna ketika Anda ingin mengaitkan aplikasi tertentu agar AutoPlay dapat disajikan kepada pengguna untuk perangkat volume Anda.

Di sini kami menunjukkan cara mengidentifikasi perangkat volume Anda sebagai perangkat AutoPlay .

Untuk mengidentifikasi perangkat volume Anda sebagai perangkat AutoPlay , tambahkan file autorun.inf ke drive root perangkat Anda. Dalam file autorun.inf, tambahkan kunci CustomEvent ke bagian AutoRun . Saat perangkat volume Anda tersambung ke PC, AutoPlay akan menemukan file autorun.inf dan memperlakukan volume Anda sebagai perangkat. AutoPlay akan membuat peristiwa AutoPlay dengan menggunakan nama yang Anda berikan untuk kunci CustomEvent . Anda kemudian dapat membuat aplikasi dan mendaftarkan aplikasi sebagai handler untuk peristiwa AutoPlay tersebut. Saat perangkat terhubung ke PC, AutoPlay akan menampilkan aplikasi Anda sebagai handler untuk perangkat volume Anda. Untuk informasi selengkapnya tentang file autorun.inf, lihat entri autorun.inf.

Langkah 1: Membuat file autorun.inf

Di drive akar perangkat volume Anda, tambahkan file bernama autorun.inf. Buka file autorun.inf dan tambahkan teks berikut.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Langkah 2: Buat proyek baru dan tambahkan deklarasi AutoPlay

  1. Buka Visual Studio dan pilih Proyek Baru dari menu File. Di bagian Visual C# , di bawah Windows, pilih Aplikasi Kosong (Universal Windows). Beri nama aplikasi AutoPlayCustomEvent dan klik OK.
  2. Buka file Package.appxmanifest dan pilih tab Kemampuan . Pilih kemampuan Penyimpanan yang Dapat Dilepas. Ini memberi aplikasi akses ke file dan folder pada perangkat penyimpanan yang dapat dilepas.
  3. Di file manifes, pilih tab Deklarasi . Di daftar drop-down Deklarasi yang Tersedia, pilih AutoPlay Content dan klik Tambahkan. Pilih item Konten AutoPlay baru yang ditambahkan ke daftar Deklarasi yang Didukung.

Catatan

Atau, Anda juga dapat memilih untuk menambahkan deklarasi Perangkat AutoPlay untuk peristiwa AutoPlay kustom Anda.

  1. Di bagian Luncurkan Tindakan untuk deklarasi peristiwa Konten AutoPlay Anda, masukkan nilai dalam tabel di bawah ini untuk tindakan peluncuran pertama.
  2. Di daftar drop-down Deklarasi yang Tersedia, pilih Asosiasi Tipe File dan klik Tambahkan. Di properti deklarasi Asosiasi Tipe File baru, atur bidang Nama Tampilan ke Tampilkan File .ms dan bidang Nama ke ms_association. Di bagian Jenis File yang Didukung, klik Tambahkan Baru. Atur bidang Jenis File ke .ms. Untuk peristiwa konten, AutoPlay memfilter jenis file apa pun yang tidak secara eksplisit terkait dengan aplikasi Anda.
  3. Simpan dan tutup file manifes.
Pengaturan Nilai
Kata kerja show
Nama Tampilan Tindakan Perlihatkan File
Peristiwa Konten Mulai AutoPlayCustomEventQuickstart

Nilai Peristiwa Konten adalah teks yang Anda berikan untuk kunci CustomEvent dalam file autorun.inf Anda. Pengaturan Nama Tampilan Tindakan mengidentifikasi string yang ditampilkan AutoPlay untuk aplikasi Anda. Pengaturan Kata Kerja mengidentifikasi nilai yang diteruskan ke aplikasi Anda untuk opsi yang dipilih. Anda dapat menentukan beberapa tindakan peluncuran untuk peristiwa AutoPlay dan menggunakan pengaturan Kata Kerja untuk menentukan opsi mana yang telah dipilih pengguna untuk aplikasi Anda. Anda dapat mengetahui opsi mana yang dipilih pengguna dengan memeriksa properti kata kerja argumen peristiwa startup yang diteruskan ke aplikasi Anda. Anda dapat menggunakan nilai apa pun untuk pengaturan Kata Kerja kecuali, terbuka, yang dicadangkan.

Langkah 3: Tambahkan UI XAML

Buka file MainPage.xaml dan tambahkan XAML berikut ke bagian Grid> default<.

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

Langkah 4: Tambahkan kode aktivasi

Kode dalam langkah ini memanggil metode untuk menampilkan folder di drive akar perangkat volume Anda. Untuk peristiwa konten AutoPlay, AutoPlay meneruskan folder akar perangkat penyimpanan dalam argumen startup yang diteruskan ke aplikasi selama peristiwa OnFileActivated . Anda dapat mengambil folder ini dari elemen pertama properti File .

Buka file App.xaml.cs dan tambahkan kode berikut ke kelas Aplikasi .

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

Catatan

Metode DisplayFiles ini ditambahkan pada langkah berikut.

Langkah 5: Tambahkan kode untuk menampilkan folder

Dalam file MainPage.xaml.cs tambahkan kode berikut ke kelas 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;
}

Langkah 6: Bangun dan jalankan aplikasi

  1. Tekan F5 untuk membangun dan menyebarkan aplikasi (dalam mode debug).
  2. Untuk menjalankan aplikasi Anda, masukkan kartu memori atau perangkat penyimpanan lain ke PC Anda. Kemudian pilih aplikasi Anda dari daftar opsi handler AutoPlay.

Referensi peristiwa AutoPlay

Sistem AutoPlay memungkinkan aplikasi mendaftar untuk berbagai peristiwa kedatangan perangkat dan volume (disk). Untuk mendaftar untuk peristiwa konten AutoPlay , Anda harus mengaktifkan kemampuan Penyimpanan yang Dapat Dilepas dalam manifes paket Anda. Tabel ini memperlihatkan peristiwa yang dapat Anda daftarkan dan kapan dinaikkan.

Skenario Kejadian Deskripsi
Menggunakan foto di Kamera WPD\ImageSource Dinaikkan untuk kamera yang diidentifikasi sebagai Perangkat Portabel Windows dan menawarkan kemampuan ImageSource.
Menggunakan musik pada pemutar audio WPD\AudioSource Dinaikkan untuk pemutar media yang diidentifikasi sebagai Perangkat Portabel Windows dan menawarkan kemampuan AudioSource.
Menggunakan video di kamera video WPD\VideoSource Dinaikkan untuk kamera video yang diidentifikasi sebagai Perangkat Portabel Windows dan menawarkan kemampuan VideoSource.
Mengakses flash drive yang terhubung atau hard drive eksternal StorageOnArrival Dinaikkan ketika drive atau volume tersambung ke PC. Jika drive atau volume berisi folder DCIM, AVCHD, atau PRIVATE\ACHD di akar disk, peristiwa ShowPicturesOnArrival akan dinaikkan sebagai gantinya.
Menggunakan foto dari penyimpanan massal (warisan) ShowPicturesOnArrival Dimunculkan saat drive atau volume berisi folder DCIM, AVCHD, atau PRIVATE\ACHD di akar disk. IJika pengguna telah mengaktifkan Pilih apa yang harus dilakukan dengan setiap jenis media di autoplay Panel Kontrol, AutoPlay akan memeriksa volume yang terhubung ke PC untuk menentukan jenis konten pada disk. Ketika gambar ditemukan, ShowPicturesOnArrival dinaikkan.
Menerima foto dengan Berbagi Kedekatan (ketuk dan kirim) ShowPicturesOnArrival Saat pengguna mengirim konten dengan menggunakan kedekatan (ketuk dan kirim), AutoPlay akan memeriksa file bersama untuk menentukan jenis konten. Jika gambar ditemukan, ShowPicturesOnArrival dinaikkan.
Menggunakan musik dari penyimpanan massal (warisan) PlayMusicFilesOnArrival Jika pengguna telah mengaktifkan Pilih apa yang harus dilakukan dengan setiap jenis media di autoplay Panel Kontrol, AutoPlay akan memeriksa volume yang terhubung ke PC untuk menentukan jenis konten pada disk. Ketika file musik ditemukan, PlayMusicFilesOnArrival dinaikkan.
Menerima musik dengan Berbagi Kedekatan (ketuk dan kirim) PlayMusicFilesOnArrival Saat pengguna mengirim konten dengan menggunakan kedekatan (ketuk dan kirim), AutoPlay akan memeriksa file bersama untuk menentukan jenis konten. Jika file musik ditemukan, PlayMusicFilesOnArrival akan dinaikkan.
Menggunakan video dari penyimpanan massal (warisan) PlayVideoFilesOnArrival Jika pengguna telah mengaktifkan Pilih apa yang harus dilakukan dengan setiap jenis media di autoplay Panel Kontrol, AutoPlay akan memeriksa volume yang terhubung ke PC untuk menentukan jenis konten pada disk. Ketika file video ditemukan, PlayVideoFilesOnArrival dinaikkan.
Menerima video dengan Berbagi Kedekatan (ketuk dan kirim) PlayVideoFilesOnArrival Saat pengguna mengirim konten dengan menggunakan kedekatan (ketuk dan kirim), AutoPlay akan memeriksa file bersama untuk menentukan jenis konten. Jika file video ditemukan, PlayVideoFilesOnArrival akan dimunculkan.
Menangani kumpulan file campuran dari perangkat yang tersambung MixedContentOnArrival Jika pengguna telah mengaktifkan Pilih apa yang harus dilakukan dengan setiap jenis media di autoplay Panel Kontrol, AutoPlay akan memeriksa volume yang terhubung ke PC untuk menentukan jenis konten pada disk. Jika tidak ada tipe konten tertentu yang ditemukan (misalnya, gambar), MixedContentOnArrival akan dinaikkan.
Menangani kumpulan file campuran dengan Berbagi Kedekatan (ketuk dan kirim) MixedContentOnArrival Saat pengguna mengirim konten dengan menggunakan kedekatan (ketuk dan kirim), AutoPlay akan memeriksa file bersama untuk menentukan jenis konten. Jika tidak ada tipe konten tertentu yang ditemukan (misalnya, gambar), MixedContentOnArrival akan dinaikkan.
Menangani video dari media optik PlayDVDMovieOnArrival
PlayBluRayOnArrival
PlayVideoCDMovieOnArrival
PlaySuperVideoCDMovieOnArrival
Ketika disk dimasukkan ke dalam drive optik, AutoPlay akan memeriksa file untuk menentukan jenis konten. Ketika file video ditemukan, peristiwa yang sesuai dengan jenis disk optik dinaikkan.
Menangani musik dari media optik PlayCDAudioOnArrival
PlayDVDAudioOnArrival
Ketika disk dimasukkan ke dalam drive optik, AutoPlay akan memeriksa file untuk menentukan jenis konten. Ketika file musik ditemukan, peristiwa yang sesuai dengan jenis disk optik dinaikkan.
Mainkan disk yang ditingkatkan PlayEnhancedCDOnArrival
PlayEnhancedDVDOnArrival
Ketika disk dimasukkan ke dalam drive optik, AutoPlay akan memeriksa file untuk menentukan jenis konten. Ketika disk yang ditingkatkan ditemukan, peristiwa yang sesuai dengan jenis disk optik dinaikkan.
Menangani disk optik yang dapat ditulis HandleCDBurningOnArrival
HandleDVDBurningOnArrival
HandleBDBurningOnArrival
Ketika disk dimasukkan ke dalam drive optik, AutoPlay akan memeriksa file untuk menentukan jenis konten. Ketika disk bisa-tulis ditemukan, peristiwa yang sesuai dengan jenis disk optik dinaikkan.
Menangani perangkat atau koneksi volume lainnya UnknownContentOnArrival Dimunculkan untuk semua peristiwa jika konten ditemukan yang tidak cocok dengan peristiwa konten AutoPlay apa pun. Penggunaan kejadian ini tidak disarankan. Anda hanya boleh mendaftarkan aplikasi Anda untuk peristiwa AutoPlay tertentu yang dapat ditanganinya.

Anda dapat menentukan bahwa AutoPlay menaikkan peristiwa Konten AutoPlay kustom menggunakan entri CustomEvent di file autorun.inf untuk volume. Untuk informasi selengkapnya, lihat Entri Autorun.inf.

Anda dapat mendaftarkan aplikasi Anda sebagai penanganan aktivitas Konten AutoPlay atau Perangkat AutoPlay dengan menambahkan ekstensi ke file package.appxmanifest untuk aplikasi Anda. Jika Anda menggunakan Visual Studio, Anda dapat menambahkan Konten AutoPlay atau deklarasi Perangkat AutoPlay di tab Deklarasi. Jika Anda mengedit file package.appxmanifest untuk aplikasi Anda secara langsung, tambahkan elemen Ekstensi ke manifes paket Anda yang menentukan windows.autoPlayContent atau windows.autoPlayDevice sebagai Kategori. Misalnya, entri berikut dalam manifes paket menambahkan ekstensi Konten AutoPlay untuk mendaftarkan aplikasi sebagai handler untuk peristiwa 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>