Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć autoodtwarzania, aby udostępnić aplikację jako opcję, gdy użytkownik łączy urządzenie z komputerem. Obejmuje to urządzenia niewolumenowe, takie jak aparat fotograficzny lub odtwarzacz multimedialny, oraz urządzenia woluminowe, takie jak pendrive USB, karta SD lub DVD. Możesz również użyć autoodtwarzania, aby zaoferować aplikację jako opcję, gdy użytkownicy udostępniają pliki między dwoma komputerami przy użyciu zbliżenia (naciśnięcie).
Uwaga / Notatka
Jeśli jesteś producentem urządzenia i chcesz skojarzyć aplikację
Rejestrowanie w celu autoodtwarzania zawartości
Aplikacje można zarejestrować jako opcje Autoodtwarzanie zdarzeń dotyczących zawartości. Zdarzenia autoodtwarzania zawartości są wywoływane, gdy urządzenie woluminu, takie jak karta pamięci aparatu, pendrive lub dysk DVD, zostaje umieszczone w komputerze. W tym miejscu pokazano, jak zidentyfikować aplikację jako opcję autoodtwarzania po wstawieniu urządzenia woluminu z aparatu.
W tym samouczku utworzyłeś aplikację, która wyświetla pliki obrazów lub kopiuje je do Obrazy. Zarejestrowano aplikację dla zdarzenia treści AutoPlay ShowPicturesOnArrival.
Autoodtwarzanie powoduje również zgłaszanie zdarzeń związanych z treścią udostępnianą między komputerami przez dotyk (zbliżenie). Kroki i kod w tej sekcji umożliwiają obsługę plików współużytkowanych między komputerami, które korzystają z sąsiedztwa. W poniższej tabeli wymieniono zdarzenia autoodtwarzania dotyczące zawartości, które są dostępne do udostępniania zawartości przy użyciu zbliżenia.
| Akcja | Zdarzenie autoodtwarzania zawartości |
|---|---|
| Udostępnianie muzyki | OdtwarzajPlikiMuzycznePoPrzybyciu |
| Udostępnianie filmów wideo | Odtwarzaj pliki wideo po przybyciu |
Gdy pliki są współużytkowane przy użyciu bliskości, atrybut Files obiektu FileActivatedEventArgs zawiera odwołanie do folderu głównego obejmującego wszystkie udostępnione pliki.
Krok 1. Tworzenie nowego projektu i dodawanie deklaracji autoodtwarzania
- Otwórz program Microsoft Visual Studio i wybierz pozycję Nowy projekt z menu Plik . W sekcji Visual C# w obszarze Windows wybierz pozycję Pusta aplikacja platformy UWP (.NET Native). Nadaj aplikacji nazwę AutoPlayDisplayOrCopyImages i kliknij przycisk OK.
- Otwórz plik Package.appxmanifest i wybierz kartę Uprawnienia. Wybierz uprawnienia przechowywanie wymienne i Biblioteka obrazów. Zapewnia to aplikacji dostęp do wymiennych urządzeń magazynujących na potrzeby pamięci aparatu i dostępu do lokalnych obrazów.
- W pliku manifestu wybierz kartę Deklaracje. Na liście rozwijanej Dostępne Deklaracje wybierz Autoodtwarzanie Zawartości i kliknij przycisk Dodaj. Wybierz nowy element
autoodtwarzania zawartości , który został dodany do listy obsługiwanych deklaracji. - Deklaracja AutoPlay zawartości identyfikuje aplikację jako opcję, gdy AutoPlay wywołuje zdarzenie dotyczące zawartości. Zdarzenie opiera się na zawartości urządzenia wolumenu, takiego jak dysk DVD lub pamięć USB. Funkcja AutoPlay sprawdza zawartość urządzenia pamięci i decyduje, które zdarzenie zawartości wywołać. Jeśli katalog główny woluminu zawiera folder DCIM, AVCHD lub PRIVATE\ACHD albo jeśli użytkownik włączył Wybierz, co zrobić z każdym typem nośnika w Panelu sterowania funkcją Autoodtwarzanie i jeśli obrazy znajdują się w katalogu głównym woluminu, funkcja Autoodtwarzanie zgłasza zdarzenie ShowPicturesOnArrival. W sekcji Uruchamianie akcji wprowadź wartości z poniższej tabeli 1 dla pierwszej akcji.
- W sekcji Akcje uruchamiania dla elementu zawartości autoodtwarzania kliknij Dodaj nową, aby dodać drugą akcję uruchamiania. Wprowadź wartości w tabeli 2 poniżej dla drugiej akcji uruchamiania.
- Na liście rozwijanej dostępne deklaracje wybierz skojarzenia typów plików i kliknij Dodaj. Właściwości nowej deklaracji skojarzeń typów plików ustaw pole Nazwa wyświetlana na AutoPlay Copy lub Pokazuj Obrazy, a pole Nazwa na wartość image_association1. W sekcji Obsługiwane typy plików kliknij pozycję Dodaj nowy. Ustaw pole Typ pliku na wartość.jpg. W sekcji Obsługiwane typy plików ustaw pole Typ pliku nowego skojarzenia pliku na wartość .png. W przypadku wydarzeń zawartości, Autoodtwarzanie pomija wszelkie typy plików, które nie są jawnie skojarzone z Twoją aplikacją.
- Zapisz i zamknij plik manifestu.
Tabela 1
| Ustawienia | Wartość |
|---|---|
| Czasownik | pokazać |
| Nazwa wyświetlana akcji | Pokaż obrazy |
| Wydarzenie dotyczące treści | WyświetlZdjęciaPoPrzyjeździe |
Ustawienie nazwa wyświetlana akcji identyfikuje ciąg, który AutoPlay wyświetla dla Twojej aplikacji. Ustawienie czasownika identyfikuje wartość przekazywaną do twojej aplikacji dla wybranej opcji. Dla zdarzenia autoodtwarzania można określić wiele akcji uruchamiania i użyć ustawienia czasownika , aby określić, która opcja została wybrana przez użytkownika dla aplikacji. Możesz określić, którą opcję wybrał użytkownik, sprawdzając właściwość czasownika w argumentach zdarzenia uruchamiania przekazanych do Twojej aplikacji. Dla ustawienia czasownika
Tabela 2
| Ustawienia | Wartość |
|---|---|
| Czasownik | kopiuj |
| Nazwa wyświetlana akcji | Kopiowanie obrazów do biblioteki |
| Wydarzenie dotyczące treści | WyświetlZdjęciaPoPrzyjeździe |
Krok 2. Dodawanie interfejsu użytkownika XAML
Otwórz plik MainPage.xaml i dodaj następujący kod XAML do domyślnej <sekcji 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"/>
Krok 3. Dodawanie kodu inicjowania
Kod w tym kroku sprawdza wartość czasownika we właściwości Verb, która jest jednym z argumentów startowych przekazanych do aplikacji podczas zdarzenia OnFileActivated. Następnie kod wywołuje metodę powiązaną z wybraną przez użytkownika opcją. W przypadku zdarzenia pamięci aparatu, AutoPlay przekazuje folder główny magazynu aparatu do aplikacji. Ten folder można pobrać z pierwszego elementu właściwości Files.
Otwórz plik App.xaml.cs i dodaj następujący kod do klasy 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);
}
Uwaga / Notatka
Metody DisplayImages i CopyImages są dodawane w poniższych krokach.
Krok 4. Dodawanie kodu do wyświetlania obrazów
W pliku MainPage.xaml.cs dodaj następujący kod do klasy 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;
});
}
Krok 5. Dodawanie kodu do kopiowania obrazów
W pliku MainPage.xaml.cs dodaj następujący kod do klasy 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");
}
}
Krok 6. Kompilowanie i uruchamianie aplikacji
- Naciśnij F5, aby skompilować i wdrożyć aplikację (w trybie debugowania).
- Aby uruchomić aplikację, włóż kartę pamięci aparatu lub inne urządzenie magazynujące z aparatu do komputera. Następnie wybierz jedną z opcji zdarzenia zawartości określonych w pliku package.appxmanifest z listy opcji autoodtwarzania. Ten przykładowy kod wyświetla lub kopiuje obrazy tylko w folderze DCIM karty pamięci aparatu. Jeśli karta pamięci aparatu przechowuje obrazy w folderze AVCHD lub PRIVATE\ACHD, należy odpowiednio zaktualizować kod.
Uwaga / Notatka
Jeśli nie masz karty pamięci aparatu, możesz użyć dysku flash, jeśli ma folder o nazwie DCIM w katalogu głównym, a folder DCIM ma podfolder zawierający obrazy.
Zarejestruj urządzenie AutoPlay
Aplikacje można zarejestrować jako opcje zdarzeń urządzenia z funkcją AutoPlay. Zdarzenia AutoPlay urządzenia są wywoływane, gdy urządzenie jest podłączone do komputera.
W tym miejscu pokazujemy, jak zidentyfikować aplikację jako opcję AutoPlay, gdy aparat jest podłączony do PC. Aplikacja rejestruje się jako obsługujący zdarzenie WPD\ImageSourceAutoPlay. Jest to typowe zdarzenie, które system Windows Portable Device (WPD) zgłasza, gdy aparaty fotograficzne i inne urządzenia do obrazowania powiadamiają o tym, że są one źródłem obrazów przy użyciu MTP. Aby uzyskać więcej informacji, zobacz Windows Portable Devices.
ImportantWindows.Devices.Portable.StorageDevice API są częścią rodziny urządzeń stacjonarnych . Aplikacje mogą używać tych interfejsów API tylko na urządzeniach z systemem Windows 10 w rodzinie urządzeń stacjonarnych, takich jak komputery.
Krok 1: Utwórz kolejny nowy projekt i dodaj deklaracje AutoPlay
- Otwórz program Visual Studio i wybierz pozycję Nowy projekt z menu Plik . W sekcji Visual C# w obszarze Windows wybierz pozycję Pusta aplikacja platformy UWP (.NET Native). Nadaj aplikacji nazwę AutoPlayDevice_Camera i kliknij przycisk OK.
- Otwórz plik Package.appxmanifest i wybierz kartę możliwości. Wybierz funkcję Magazyn wymienny. To daje aplikacji dostęp do danych z kamery jako urządzenia z wymienną pamięcią masową.
- W pliku manifestu wybierz kartę Deklaracje. Na liście rozwijanej Deklaracje dostępne wybierz pozycję Autoodtwarzanie urządzenia i kliknij Dodaj. Wybierz nowy element
autoodtwarzania urządzenia dodany do listy obsługiwanych deklaracji. - Deklaracja urządzenia AutoPlay identyfikuje aplikację jako opcję, gdy autoodtwarzanie wyzwala zdarzenie urządzenia dla znanych zdarzeń. W sekcji Uruchamianie działań wprowadź wartości w poniższej tabeli dla pierwszej akcji uruchamiania.
- Na liście rozwijanej dostępne deklaracje wybierz skojarzenia typów plików i kliknij Dodaj. W Właściwościach nowej deklaracji skojarzeń typu pliku ustaw pole nazwa wyświetlana na Pokaż obrazy z aparatu oraz pole nazwa na camera_association1. W sekcji Obsługiwane Typy Plików, kliknij pozycję Dodaj Nowy (w razie potrzeby). Ustaw pole Typ pliku na wartość.jpg. W sekcji Obsługiwane typy plików kliknij ponownie Dodaj nową. Ustaw pole Typ pliku nowego skojarzenia pliku na wartość.png. W przypadku wydarzeń zawartości, Autoodtwarzanie pomija wszelkie typy plików, które nie są jawnie skojarzone z Twoją aplikacją.
- Zapisz i zamknij plik manifestu.
| Ustawienia | Wartość |
|---|---|
| Czasownik | pokazać |
| Nazwa wyświetlana akcji | Pokaż obrazy |
| Wydarzenie dotyczące treści | WPD\ImageSource |
Ustawienie nazwa wyświetlana akcji identyfikuje ciąg, który AutoPlay wyświetla dla Twojej aplikacji. Ustawienie czasownika identyfikuje wartość przekazywaną do twojej aplikacji dla wybranej opcji. Dla zdarzenia autoodtwarzania można określić wiele akcji uruchamiania i użyć ustawienia czasownika , aby określić, która opcja została wybrana przez użytkownika dla aplikacji. Możesz określić, którą opcję wybrał użytkownik, sprawdzając właściwość czasownika w argumentach zdarzenia uruchamiania przekazanych do Twojej aplikacji. Dla ustawienia czasownika
Krok 2: Dodaj odwołanie do zestawu dla rozszerzeń pulpitu
Interfejsy API wymagane do uzyskania dostępu do pamięci masowej na urządzeniu przenośnym z systemem Windows, Windows.Devices.Portable.StorageDevice, są częścią rodziny urządzeń stacjonarnych. Oznacza to, że do korzystania z interfejsów API jest wymagany specjalny zestaw, a te wywołania będą działać tylko na urządzeniu z rodziny urządzeń stacjonarnych (np. na komputerze).
- W eksploratorze rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie Dodaj odwołanie....
- Rozwiń węzeł Universal Windows i kliknij Extensions.
- Następnie wybierz pozycję Rozszerzenia pulpitu Windows dla UWP i kliknij OK.
Krok 3. Dodawanie interfejsu użytkownika XAML
Otwórz plik MainPage.xaml i dodaj następujący kod XAML do domyślnej <sekcji 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>
Krok 4. Dodawanie kodu aktywacji
Kod w tym kroku odwołuje się do aparatu jako StorageDevice, przekazując identyfikator urządzenia dla aparatu do metody FromId. Uzyskuje się identyfikator informacji o urządzeniu aparatu, najpierw rzutując argumenty zdarzenia jako DeviceActivatedEventArgs, a następnie pobierając wartość z właściwości DeviceInformationId.
Otwórz plik App.xaml.cs i dodaj następujący kod do klasy 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);
}
Uwaga / Notatka
Metoda ShowImages jest dodawana w poniższym kroku.
Krok 5. Dodawanie kodu w celu wyświetlenia informacji o urządzeniu
Informacje o aparacie można uzyskać z właściwości klasy StorageDevice . Kod w tym kroku wyświetla nazwę urządzenia i inne informacje dla użytkownika po uruchomieniu aplikacji. Następnie kod wywołuje metody GetImageList i GetThumbnail, które zostaną dodane w następnym kroku, aby wyświetlić miniatury obrazów przechowywanych w aparacie
W pliku MainPage.xaml.cs dodaj następujący kod do klasy 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));
}
}
Uwaga / Notatka
Metody GetImageList i GetThumbnail są dodawane w poniższym kroku.
Krok 6. Dodawanie kodu do wyświetlania obrazów
Kod w tym kroku wyświetla miniatury obrazów przechowywanych w aparacie. Kod wykonuje asynchroniczne wywołania do kamery w celu uzyskania obrazu miniatury. Jednak następne wywołanie asynchroniczne nie następuje, dopóki poprzednie wywołanie asynchroniczne nie zostanie zakończone. Gwarantuje to, że tylko jedno żądanie zostanie złożone do aparatu na raz.
W pliku MainPage.xaml.cs dodaj następujący kod do klasy 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;
}
Krok 7. Kompilowanie i uruchamianie aplikacji
- Naciśnij F5, aby skompilować i wdrożyć aplikację (w trybie debugowania).
- Aby uruchomić aplikację, połącz aparat z maszyną. Następnie wybierz aplikację z listy Opcji autoodtwarzania.
Uwaga / Notatka
Nie wszystkie aparaty obsługują zdarzenie urządzenia WPD\ImageSource AutoPlay.
Konfigurowanie magazynu wymiennego
Urządzenie pamięci, takie jak karta pamięci lub pendrive, można zidentyfikować jako urządzenie AutoPlay, gdy jest podłączone do komputera. Jest to szczególnie przydatne, gdy chcesz skojarzyć określoną aplikację dla AutoPlay, aby zaprezentować ją użytkownikowi przy użyciu twojego urządzenia głośności.
Tutaj pokazujemy, jak zidentyfikować urządzenie woluminu jako urządzenie AutoPlay.
Aby zidentyfikować urządzenie woluminu jako urządzenie autoodtwarzanie, dodaj plik autorun.inf do dysku głównego urządzenia. W pliku autorun.inf dodaj klucz CustomEvent do sekcji AutoRun . Gdy urządzenie wolumenu łączy się z komputerem, AutoPlay znajdzie plik autorun.inf i potraktuje twój wolumen jako urządzenie. AutoPlay utworzy zdarzenie AutoPlay przy użyciu nazwy podanej dla klucza CustomEvent. Następnie możesz utworzyć aplikację i zarejestrować ją jako obsługę dla tego zdarzenia AutoPlay. Gdy urządzenie jest połączone z komputerem, Autoodtwarzanie wyświetli twoją aplikację jako obsługującą dla urządzenia pamięci masowej. Aby uzyskać więcej informacji na temat plików autorun.inf, zobacz wpisy autorun.inf .
Krok 1. Tworzenie pliku autorun.inf
Na dysku głównym urządzenia woluminu dodaj plik o nazwie autorun.inf. Otwórz plik autorun.inf i dodaj następujący tekst.
[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart
Krok 2. Tworzenie nowego projektu i dodawanie deklaracji autoodtwarzania
Otwórz program Visual Studio i wybierz pozycję Nowy projekt z menu Plik . W sekcji Visual C# w obszarze Windows wybierz pozycję Pusta aplikacja platformy UWP (.NET Native). Nadaj aplikacji nazwę AutoPlayCustomEvent i kliknij przycisk OK.
Otwórz plik Package.appxmanifest i wybierz kartę możliwości. Wybierz funkcję Magazyn wymienny. Zapewnia to aplikacji dostęp do plików i folderów na urządzeniach magazynujących wymiennych.
W pliku manifestu wybierz kartę Deklaracje. Na liście rozwijanej Dostępne Deklaracje wybierz Autoodtwarzanie Zawartości i kliknij przycisk Dodaj. Wybierz nowy element
autoodtwarzania zawartości , który został dodany do listy obsługiwanych deklaracji. Uwaga / Notatka
Alternatywnie możesz również dodać deklarację urządzenia AutoPlay dla niestandardowego zdarzenia autoodtwarzania.
W sekcji Akcje Uruchamiania dla deklaracji zdarzenia Autoodtwarzania Zawartości wprowadź wartości z poniższej tabeli dla pierwszej akcji uruchamiania.
Na liście rozwijanej dostępne deklaracje wybierz skojarzenia typów plików i kliknij Dodaj. Właściwości nowej deklaracji skojarzenia typów plików ustaw pole Nazwa wyświetlana na Show .ms Files oraz pole Nazwa na ms_association. W sekcji Obsługiwane typy plików kliknij pozycję Dodaj nowy. Ustaw pole Typ pliku na wartość .ms. W przypadku zdarzeń zawartości, Autoodtwarzanie filtruje dowolne typy plików, które nie są jawnie skojarzone z Twoją aplikacją.
Zapisz i zamknij plik manifestu.
| Ustawienia | Wartość |
|---|---|
| Czasownik | pokazać |
| Nazwa wyświetlana akcji | Pokaż pliki |
| Wydarzenie dotyczące treści | Szybki start zdarzenia niestandardowego AutoPlay |
Wartość zdarzenia zawartości to tekst, który podałeś dla klucza CustomEvent w pliku autorun.inf. Ustawienie nazwa wyświetlana akcji identyfikuje ciąg, który AutoPlay wyświetla dla Twojej aplikacji. Ustawienie czasownika identyfikuje wartość przekazywaną do twojej aplikacji dla wybranej opcji. Dla zdarzenia autoodtwarzania można określić wiele akcji uruchamiania i użyć ustawienia czasownika , aby określić, która opcja została wybrana przez użytkownika dla aplikacji. Możesz określić, którą opcję wybrał użytkownik, sprawdzając właściwość czasownika w argumentach zdarzenia uruchamiania przekazanych do Twojej aplikacji. Dla ustawienia czasownika
Krok 3. Dodawanie interfejsu użytkownika XAML
Otwórz plik MainPage.xaml i dodaj następujący kod XAML do domyślnej <sekcji 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>
Krok 4. Dodawanie kodu aktywacji
Kod w tym kroku wywołuje metodę, aby wyświetlić foldery w katalogu głównym twojego urządzenia magazynującego. Podczas zdarzeń związanych z zawartością AutoPlay, AutoPlay przekazuje folder główny urządzenia magazynującego w argumentach uruchamiania przekazanych do aplikacji w trakcie zdarzenia OnFileActivated. Ten folder można pobrać z pierwszego elementu właściwości Files.
Otwórz plik App.xaml.cs i dodaj następujący kod do klasy 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);
}
Uwaga / Notatka
Metoda DisplayFiles jest dodawana w poniższym kroku.
Krok 5. Dodawanie kodu do wyświetlania folderów
W pliku MainPage.xaml.cs dodaj następujący kod do klasy 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;
}
Krok 6. Kompilowanie i uruchamianie aplikacji
- Naciśnij F5, aby skompilować i wdrożyć aplikację (w trybie debugowania).
- Aby uruchomić aplikację, włóż kartę pamięci lub inne urządzenie magazynujące do komputera. Następnie wybierz aplikację z listy opcji programu obsługującego Autoodtwarzanie.
Dokumentacja odniesienia dla zdarzeń AutoPlay
System AutoPlay umożliwia aplikacjom rejestrowanie się na różne zdarzenia związane z przybyciem urządzeń i woluminów (dysków). Aby zarejestrować się w celu
| Scenariusz | Zdarzenie | Opis |
|---|---|---|
| Używanie zdjęć w aparacie | WPD\ImageSource | Podniesione dla aparatów, które są identyfikowane jako urządzenia przenośne z systemem Windows i oferują możliwość ImageSource. |
| Używanie muzyki na odtwarzaczu audio | WPD\AudioSource | Podniesione dla odtwarzaczy multimedialnych, które są identyfikowane jako urządzenia przenośne z systemem Windows i oferują możliwość AudioSource. |
| Korzystanie z filmów w kamerze | WPD\VideoSource | Stworzone dla kamer wideo, które są identyfikowane jako Windows Portable Devices i oferują możliwość VideoSource. |
| Uzyskiwanie dostępu do podłączonego dysku flash lub zewnętrznego dysku twardego | StorageOnArrival | Zgłaszane, gdy dysk lub wolumin jest podłączony do komputera. Jeśli dysk lub wolumin zawiera folder DCIM, AVCHD lub PRIVATE\ACHD w katalogu głównym dysku, zamiast tego zostanie zgłoszone zdarzenie ShowPicturesOnArrival . |
| Używanie zdjęć z pamięci masowej (starsza wersja) | PokażZdjęciaPoPrzyjeździe | Zgłaszane, gdy na dysku lub woluminie wykryto folder DCIM, AVCHD lub PRIVATE\ACHD w katalogu głównym. Jeśli użytkownik włączył Wybierz, co zrobić z każdym typem nośnika w Panelu sterowania Autoodtwarzanie, Autoodtwarzanie przeanalizuje wolumin podłączony do komputera, aby określić typ zawartości na dysku. Po znalezieniu obrazów zostanie podniesiona ShowPicturesOnArrival. |
| Odbieranie zdjęć z udostępnianiem zbliżenia (naciśnięcie i wysłanie) | PokażZdjęciaPoPrzyjeździe | Gdy użytkownicy wysyłają zawartość za pomocą funkcji dotknij i wyślij, AutoPlay sprawdza udostępnione pliki, aby ustalić rodzaj zawartości. Jeśli zostaną znalezione obrazy, zostanie uruchomione ShowPicturesOnArrival. |
| Używanie muzyki z magazynu masowego (starsza wersja) | PlayMusicFilesOnArrival | Jeśli użytkownik włączył Wybierz, co zrobić z każdym typem nośnika w Panelu sterowania funkcją Autoodtwarzanie, funkcja Autoodtwarzanie sprawdzi wolumin podłączony do komputera, aby określić typ zawartości na dysku. Po znalezieniu plików muzycznych PlayMusicFilesOnArrival jest uruchamiany. |
| Odbieranie muzyki z udostępnianiem zbliżenia (naciśnij i wyślij) | PlayMusicFilesOnArrival | Gdy użytkownicy wysyłają zawartość za pomocą funkcji dotknij i wyślij, AutoPlay sprawdza udostępnione pliki, aby ustalić rodzaj zawartości. Jeśli zostaną znalezione pliki muzyczne, zostanie wywołane PlayMusicFilesOnArrival. |
| Używanie filmów wideo z pamięci masowej (przestarzała wersja) | OdtwarzajPlikiWideoPoPrzybyciu | Jeśli użytkownik włączył Wybierz, co zrobić z każdym typem nośnika w Panelu sterowania funkcją Autoodtwarzanie, funkcja Autoodtwarzanie sprawdzi wolumin podłączony do komputera, aby określić typ zawartości na dysku. Po znalezieniu plików wideo zostanie zgłoszony PlayVideoFilesOnArrival. |
| Odbieranie filmów wideo z udostępnianiem zbliżenia (naciśnięcie i wysłanie) | OdtwarzajPlikiWideoPoPrzybyciu | Gdy użytkownicy wysyłają zawartość za pomocą funkcji dotknij i wyślij, AutoPlay sprawdza udostępnione pliki, aby ustalić rodzaj zawartości. Jeśli zostaną znalezione pliki wideo, zostaje uruchomiona PlayVideoFilesOnArrival. |
| Obsługa mieszanych zestawów plików z połączonego urządzenia | MixedContentOnArrival [Różna zawartość po przyjeździe] | Jeśli użytkownik włączył Wybierz, co zrobić z każdym typem nośnika w Panelu sterowania funkcją Autoodtwarzanie, funkcja Autoodtwarzanie sprawdzi wolumin podłączony do komputera, aby określić typ zawartości na dysku. Jeśli nie zostanie znaleziony żaden określony typ zawartości (na przykład obrazy), zostanie zgłoszony MixedContentOnArrival . |
| Obsługa mieszanych zestawów plików z funkcją Udostępniania w pobliżu (kliknij i wyślij) | MixedContentOnArrival [Różna zawartość po przyjeździe] | Gdy użytkownicy wysyłają zawartość za pomocą funkcji dotknij i wyślij, AutoPlay sprawdza udostępnione pliki, aby ustalić rodzaj zawartości. Jeśli nie zostanie znaleziony żaden określony typ zawartości (na przykład obrazy), zostanie zgłoszony MixedContentOnArrival . |
| Obsługiwanie wideo z nośników optycznych | OdtwórzBluRayPoPrzybyciu OdtwórzFilmVideoCDPoPrzybyciu OdtwórzSuperVideoCDFilmPoPrzyjeździe |
Gdy dysk zostanie wstawiony do dysku optycznego, funkcja AutoPlay zbada pliki w celu określenia typu zawartości. Po znalezieniu plików wideo jest zgłaszane zdarzenie odpowiadające typowi dysku optycznego. |
| Obsługa muzyki z mediów optycznych | OdtwórzDźwiękDVDPoPrzybyciu |
Gdy dysk zostanie wstawiony do dysku optycznego, funkcja AutoPlay zbada pliki w celu określenia typu zawartości. Po znalezieniu plików muzycznych zdarzenie odpowiadające typowi dysku optycznego jest wywoływane. |
| Odtwarzanie dysków rozszerzonych |
OdtwórzUlepszonyCDPrzyPrzybyciu OdtwórzUlepszonąPłytęDVDPoPrzybyciu |
Gdy dysk zostanie wstawiony do dysku optycznego, funkcja AutoPlay zbada pliki w celu określenia typu zawartości. Po znalezieniu dysku rozszerzonego jest zgłaszane zdarzenie odpowiadające typowi dysku optycznego. |
| Obsługa zapisywalnych dysków optycznych |
Obsługa nagrywania CD po przybyciu PrzetwarzajNagrzewanieDVDPoPrzybyciu HandleBDBurningOnArrival |
Gdy dysk zostanie wstawiony do dysku optycznego, funkcja AutoPlay zbada pliki w celu określenia typu zawartości. Po znalezieniu dysku zapisywalnego zgłaszane jest zdarzenie odpowiadające typowi dysku optycznego. |
| Obsługa dowolnego innego urządzenia lub połączenia woluminu | UnknownContentOnArrival | Zgłoszone dla wszystkich zdarzeń w przypadku znalezienia zawartości, która nie pasuje do żadnego ze zdarzeń zawartości AutoOdtwarzanie. Użycie tego zdarzenia nie jest zalecane. Należy zarejestrować aplikację tylko dla określonych zdarzeń autoodtwarzania, które może obsłużyć. |
Możesz określić, że Autoodtwarzanie wywołuje niestandardowe zdarzenie Autoodtwarzania zawartości przy użyciu wpisu CustomEvent w pliku autorun.inf dla danego wolumenu. Aby uzyskać więcej informacji, zobacz Wpisy Autorun.inf.
Możesz zarejestrować swoją aplikację jako obsługę zdarzeń zawartości AutoPlay lub urządzenia AutoPlay, dodając rozszerzenie do pliku package.appxmanifest dla swojej aplikacji. Jeśli używasz programu Visual Studio, możesz dodać
<Applications>
<Application Id="AutoPlayHandlerSample.App">
<Extensions>
<Extension Category="windows.autoPlayContent">
<AutoPlayContent>
<LaunchAction Verb="show" ActionDisplayName="Show Pictures"
ContentEvent="ShowPicturesOnArrival" />
</AutoPlayContent>
</Extension>
</Extensions>
</Application>
</Applications>