Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows. Devices.Enumeration API'leri, sisteme dahili olarak bağlı, harici olarak bağlı veya kablosuz veya ağ protokolleri üzerinden algılanabilen cihazları bulmanıza olanak tanır.
Samples
Kullanılabilir tüm cihazları listelemenin en kolay yolu FindAllAsync komutuyla anlık görüntü almaktır (aşağıdaki bölümde daha ayrıntılı olarak açıklanmıştır).
async void enumerateSnapshot(){
DeviceInformationCollection collection = await DeviceInformation.FindAllAsync();
}
Windows.Devices.Enumeration API'lerine ilişkin daha gelişmiş bir örnek için Cihaz numaralandırma ve eşleştirme örneğine bakın.
Numaralandırma API'leri
Windows. Devices.Enumeration ad alanı, sisteme dahili olarak bağlı, harici olarak bağlı veya kablosuz veya ağ protokolleri üzerinden algılanabilen cihazları bulmanıza olanak tanır. Bu API'ler tarafından desteklenen özelliklerden bazıları şunlardır:
- Uygulamanıza bağlanacak bir cihaz bulma.
- Sisteme bağlı veya sistem tarafından bulunabilen cihazlar hakkında bilgi alma.
- Bir uygulamanın cihazlar eklendiğinde, bağlandığında, bağlantısını kestiğinde, çevrimiçi durumunu değiştirdiğinde veya diğer özellikleri değiştirdiğinde bildirim almasını sağlayın.
- Cihazlar bağlandığında, bağlantıyı kestiğinde, çevrimiçi durumunu değiştirdiğinde veya diğer özellikleri değiştirdiğinde bir uygulamanın arka plan tetikleyicileri almasını sağlayın.
Bu API'ler, tek tek cihaz ve uygulamayı çalıştıran sistemin bu teknolojiyi desteklemesi koşuluyla aşağıdaki protokol ve veri yolları üzerinden cihazları numaralandırabilir. Bu kapsamlı bir liste değildir ve diğer protokoller belirli bir cihaz tarafından desteklenebilir.
- Fiziksel olarak bağlı otobüsler. Buna PCI ve USB dahildir. Örneğin, Aygıt Yöneticisi içinde görebileceğiniz her şey.
- Upnp
- Digital Living Network Alliance (DLNA)
- Keşif ve Başlatma (DIAL)
- DNS Hizmeti Bulma (DNS-SD)
- Cihazlarda Web Hizmetleri (WSD)
- Bluetooth
- Wi-Fi Direct
- WiGig
- Hizmet Noktası
Çoğu durumda, numaralandırma API'lerini kullanma konusunda endişelenmeniz gerekmez. Bunun nedeni, cihazları kullanan birçok API'nin uygun varsayılan cihazı otomatik olarak seçmesi veya daha kolay bir numaralandırma API'sini sağlamasıdır. Örneğin, MediaPlayerElement otomatik olarak varsayılan ses işleyici cihazını kullanır. Uygulamanız varsayılan cihazı kullanabildiği sürece, uygulamanızda numaralandırma API'lerini kullanmanız gerekmez. Numaralandırma API'leri, kullanılabilir cihazları bulmanız ve bu cihazlara bağlanmanız için genel ve esnek bir yol sağlar. Bu konu, cihazları numaralandırma hakkında bilgi sağlar ve cihazları listelemenin dört yaygın yolunu açıklar.
- DevicePicker kullanıcı arabirimini kullanma
- Sistem tarafından bulunabilen cihazların anlık görüntüsünü listeleme
- Şu anda bulunabilir cihazları listeleme ve değişiklikleri izleme
- Şu anda bulunabilir cihazları numaralandırma ve arka plan görevinde yapılan değişiklikleri izleme
DeviceInformation nesneleri
Numaralandırma API'leriyle çalışırken, DeviceInformation nesnelerini kullanmanız gerekir. Bu nesneler, cihazla ilgili kullanılabilir bilgilerin çoğunu içerir. Aşağıdaki tabloda, ilgileneceğin DeviceInformation özelliklerinden bazıları açıklanmaktadır. Tam liste için DeviceInformation başvuru sayfasına bakın.
| Mülkiyet | Açıklamalar |
|---|---|
| DeviceInformation.Id | Bu, cihazın benzersiz tanımlayıcısıdır ve dize değişkeni olarak sağlanır. Çoğu durumda bu, ilgilendiğiniz belirli cihazı belirtmek için bir yöntemden diğerine geçireceğiniz opak bir değerdir. Uygulamanızı kapatıp yeniden açtığınızda bu özelliği ve DeviceInformation.Kind özelliğini de kullanabilirsiniz. Bu, aynı DeviceInformation nesnesini kurtarmanızı ve yeniden kullanabilmenizi sağlar. |
| DeviceInformation.Kind | Bu, DeviceInformation nesnesi tarafından temsil edilen cihaz nesnesinin türünü gösterir. Bu, cihaz kategorisi veya cihaz türü değildir. Tek bir cihaz, farklı türlerde birkaç farklı DeviceInformation nesnesiyle temsil edilebilir. Bu özelliğin olası değerleri , DeviceInformationKind'de ve birbirleriyle nasıl ilişkilendirildiklerinde listelenir. |
| DeviceInformation.Properties | Bu özellik paketi, DeviceInformation nesnesi için istenen bilgileri içerir. En yaygın özelliklere, deviceInformation nesnesinin özellikleri (örneğin , DeviceInformation.Name) olarak kolayca başvurulur. Daha fazla bilgi için bkz . Cihaz bilgileri özellikleri. |
DevicePicker kullanıcı arabirimi
DevicePicker Windows tarafından sağlanan ve kullanıcının listeden cihaz seçmesine olanak tanıyan küçük bir kullanıcı arabirimi oluşturan bir denetimdir. Aşağıdakiler gibi birkaç şekilde özelleştirilebilir:
- DevicePicker.Filter dosyasına SupportedDeviceSelectors, SupportedDeviceClasses veya her ikisini birden ekleyerek kullanıcı arabiriminde görüntülenen cihazları denetleyin. Çoğu durumda yalnızca bir seçici veya sınıf eklemeniz gerekir, ancak birden fazla seçim yapmanız gerekiyorsa birden çok seçici ekleyebilirsiniz. Birden fazla seçici veya sınıf eklerseniz, bunlar VEYA mantığıyla birleştirilir.
- Cihazlar için almak istediğiniz özellikleri belirtin. DevicePicker.RequestedProperties'e özellikler ekleyerek bunu yapabilirsiniz.
- Appearance kullanarak DevicePicker görünümünü değiştirin.
- görüntülendiğinde DevicePicker boyutunu ve konumunu belirtin.
DevicePicker görüntülenirken, cihazlar eklenir, kaldırılır veya güncelleştirilirse kullanıcı arabiriminin içeriği otomatik olarak güncelleştirilir.
Note
DevicePicker kullanarak DeviceInformationKind belirtemezsiniz. Belirli bir DeviceInformationKind cihazlarına sahip olmak istiyorsanız, bir DeviceWatcher oluşturmanız ve kendi kullanıcı arabiriminizi sağlamanız gerekir.
Medya içeriğini yayınlama ve DIAL, bunları kullanmak isterseniz, her biri kendi seçicilerini de sunar. Bunlar sırasıyla CastingDevicePicker ve DialDevicePicker şeklindedir.
Cihazların anlık görüntüsünü listeleme
Bazı senaryolarda DevicePicker gereksinimlerinize uygun olmayacaktır ve daha esnek bir şeye ihtiyacınız vardır. Kendi kullanıcı arabiriminizi oluşturmak veya kullanıcıya kullanıcı arabirimi görüntülemeden cihazları listelemeniz gerekebilir. Bu durumlarda, cihazların anlık görüntüsünü numaralandırabilirsiniz. Bu, şu anda sisteme bağlı veya sistemle eşleştirilmiş cihazlara bakmayı içerir. Ancak, bu yöntemin yalnızca kullanılabilir cihazların anlık görüntüsüne baktığını, bu nedenle listede numaralandırdıktan sonra bağlanan cihazları bulamayacağınızı bilmeniz gerekir. Ayrıca, bir cihaz güncelleştirilirse veya kaldırılırsa size bildirilmez. Dikkate alınması gereken bir diğer olası dezavantaj da, bu yöntemin tüm yineleme işlemi tamamlanana kadar hiçbir sonuç vermemesidir. Bu nedenle, AssociationEndpoint, AssociationEndpointContainer veya AssociationEndpointService nesneleri bir ağ veya kablosuz protokol üzerinden bulunduğundan, bu yöntemi kullanmamalısınız. Bu işlemin tamamlanması 30 saniye kadar sürebilir. Bu senaryoda, olası cihazlar arasında numaralandırmak için bir DeviceWatcher nesnesi kullanmanız gerekir.
Cihazların anlık görüntüsünü numaralandırmak için FindAllAsync yöntemini kullanın. Bu yöntem, numaralandırma işleminin tamamı tamamlanana kadar bekler ve tüm sonuçları tek bir DeviceInformationCollection nesnesi olarak döndürür. Bu yöntem ayrıca sonuçlarınızı filtrelemek ve bunları ilgilendiğiniz cihazlarla sınırlamak için çeşitli seçenekler sunmak için aşırı yüklenmiştir. Bunu yapmak için DeviceClass sağlayabilir veya cihaz seçicisini geçirebilirsiniz. Cihaz seçici, numaralandırmak istediğiniz cihazları belirten bir Gelişmiş Sorgu Söz Dizimi (AQS) dizesidir. Daha fazla bilgi için bkz . Cihaz seçici oluşturma.
Sonuçları sınırlamaya ek olarak, cihazlar için almak istediğiniz özellikleri de belirtebilirsiniz. Bunu yaparsanız, belirtilen özellikler, koleksiyonda döndürülen her DeviceInformation nesnesinin özellik paketinde bulunur. Tüm cihaz türleri için tüm özelliklerin kullanılamadığını unutmayın. Hangi cihaz türleri için hangi özelliklerin kullanılabilir olduğunu görmek için bkz . Cihaz bilgileri özellikleri.
Cihazları listeleme ve izleme
Cihazları listelemek için daha güçlü ve esnek bir yöntem DeviceWatcher oluşturmaktır. Bu seçenek, cihazları numaralandırırken en fazla esnekliği sağlar. Mevcut cihazları listelemenize ve cihaz seçicinizle eşleşen cihazlar eklendiğinde, kaldırıldığında veya özellikler değiştiğinde bildirim almanıza olanak tanır. DeviceWatcher oluşturduğunuzda bir cihaz seçici sağlarsınız. Cihaz seçicileri hakkında daha fazla bilgi için bkz. Cihaz seçici oluşturma. İzleyiciyi oluşturduktan sonra, sağlanan ölçütlerinizle eşleşen tüm cihazlar için aşağıdaki bildirimleri alırsınız.
- Yeni bir cihaz eklendiğinde bildirim ekleyin.
- İlgilendiğiniz bir mülkte değişiklik olduğunda bildirim alın.
- Cihaz artık kullanılamadığında veya filtrenizle eşleşmediğinde bildirimi kaldırın.
DeviceWatcher kullandığınız çoğu durumda, bir cihaz listesi tutar ve cihazlara eklersiniz, öğe kaldırırsınız veya izleyiciniz izlediğiniz cihazlardan güncelleştirmeleri aldığında öğeleri güncelleştirirsiniz. Güncelleştirme bildirimi aldığınızda, güncelleştirilmiş bilgiler DeviceInformationUpdate nesnesi olarak kullanılabilir. Cihaz listenizi güncelleştirmek için, önce değiştirilen uygun DeviceInformation bulun. Ardından, Update yöntemini bu nesne için DeviceInformationUpdate nesnesini geçirerek çağırın. Bu, DeviceInformation nesnenizi otomatik olarak güncelleştiren bir kolaylık işlevidir.
DeviceWatcher cihazlar algılandıkça ve değiştiklerinde bildirim gönderdiğinden, AssociationEndpoint, AssociationEndpointContainer veya AssociationEndpointService nesneleriyle ilgileniyorsanız, bu nesneler ağ veya kablosuz protokoller üzerinden listelendiği için cihazları numaralandırmak üzere bu yöntemi kullanmalısınız.
DeviceWatcher oluşturmak için CreateWatcher yöntemlerinden birini kullanın. Bu yöntemler, ilgilendiğiniz cihazları belirtmenize olanak tanımak için aşırı yüklenmiştir. Bunu yapmak için DeviceClass sağlayabilir veya cihaz seçicisini geçirebilirsiniz. Cihaz seçici, numaralandırmak istediğiniz cihazları belirten bir AQS dizesidir. Daha fazla bilgi için bkz . Cihaz seçici oluşturma. Cihazlar için almak istediğiniz ve ilgilendiğiniz özellikleri de belirtebilirsiniz. Bunu yaparsanız, belirtilen özellikler, koleksiyonda döndürülen her DeviceInformation nesnesinin özellik paketinde bulunur. Tüm cihaz türleri için tüm özelliklerin kullanılamadığını unutmayın. Hangi cihaz türleri için hangi özelliklerin kullanılabilir olduğunu görmek için bkz . Cihaz bilgileri özellikleri
Cihazları bir arka plan görevi olarak izleyin
Cihazları arka plan görevi olarak izlemek, yukarıda açıklandığı gibi DeviceWatcher oluşturmaya çok benzer. Aslında, önceki bölümde açıklandığı gibi önce normal bir DeviceWatcher nesnesi oluşturmanız gerekir. Oluşturduktan sonra DeviceWatcher.Start yerine GetBackgroundTrigger'ı çağırırsınız. GetBackgroundTrigger'ı çağırdığınızda, hangi bildirimlerin ilginizi çektiğini belirtmeniz gerekir: ekleme, kaldırma veya güncelleştirme. Ayrıca, ekleme isteğinde bulunmadan güncelleştirme veya kaldırma isteğinde bulunamazsınız. Tetikleyiciyi kaydettikten sonra DeviceWatcher arka planda hemen çalışmaya başlar. Bu noktadan sonra, uygulamanız için ölçütlerinizle eşleşen yeni bir bildirim aldığında arka plan görevi tetiklenir ve uygulamanızı en son tetiklediğinden bu yana en son değişiklikleri sağlar.
Important
Uygulamanızın DeviceWatcherTrigger tarafından ilk kez tetikleneceği zaman, izleyici EnumerationCompleted durumuna ulaştığında olacaktır. Bu, ilk sonuçların tümünü içereceği anlamına gelir. Uygulamanızı gelecekte tetiklediğinde yalnızca son tetikleyiciden sonra oluşan ekleme, güncelleştirme ve kaldırma bildirimlerini içerir. Bu, ön plan DeviceWatcher nesnesinden biraz farklıdır çünkü ilk sonuçlar tek seferde bir kez gelmez ve yalnızca EnumerationCompleted ulaşıldıktan sonra bir pakette teslim edilir.
Bazı kablosuz protokoller arka planda ve ön planda tarama yapıyorlarsa farklı davranırlar veya arka planda taramayı hiç desteklemeyebilirler. Arka plan taramasıyla ilgili üç olasılık vardır. Aşağıdaki tabloda, bunun uygulamanız üzerindeki olasılıkları ve etkileri listelemektedir. Örneğin, Bluetooth ve Wi-Fi Direct arka plan taramalarını desteklemediğinden uzantıya göre DeviceWatcherTrigger desteklemez.
| Behavior | Etki |
|---|---|
| Arka planda aynı davranış | Hiçbiri |
| Arka planda yalnızca pasif taramalar mümkündür | Pasif taramanın gerçekleşmesini beklerken cihazın bulunması daha uzun sürebilir. |
| Arka plan taramaları desteklenmiyor | hiçbir cihaz DeviceWatcherTrigger tarafından algılanamaz ve hiçbir güncelleştirme bildirilmez. |
DeviceWatcherTrigger arka plan görevi olarak içinde taramayı desteklemeyen bir protokol içeriyorsa tetikleyiciniz çalışmaya devam eder. Ancak, bu protokol üzerinden herhangi bir güncelleştirme veya sonuç alamazsınız. Diğer protokoller veya cihazlar için güncelleştirmeler normal olarak algılanır.
DeviceInformationKind Kullanımı
Çoğu senaryoda DeviceInformationKindDeviceInformation nesnesi için endişelenmeniz gerekmez. Bunun nedeni, kullandığınız aygıt API'sinin döndürdüğü aygıt seçicinin, genellikle kendi API'siyle kullanılabilecek doğru türde aygıt nesnelerini almanızı garanti etmesidir. Ancak bazı senaryolarda cihazlar için DeviceInformation'ı almak istersiniz, ancak cihaz seçici sağlamak için buna karşılık gelen bir cihaz API'si yoktur. Bu durumlarda kendi seçicinizi oluşturmanız gerekir. Örneğin, Devices için Web Services'in özel bir API'si yoktur, ancak bu cihazları Windows.Devices.Enumeration API'lerini kullanarak keşfedebilir ve bunlar hakkında bilgi alabilir, ardından bunları soket API'lerini kullanarak kullanabilirsiniz.
Cihaz nesneleri arasında numaralandırmak için kendi cihaz seçicinizi oluşturuyorsanız, DeviceInformationKind'i anlamanız önemlidir. Tüm olası türlerin yanı sıra birbirleriyle ilişkilerinin tümü , DeviceInformationKind'in başvuru sayfasında açıklanmıştır. DeviceInformationKind'in en yaygın kullanımlarından biri, bir cihaz seçiciyle birlikte sorgu gönderirken ne tür cihazlar aradığınızı belirtmektir. Bunu yaptığınızda, yalnızca sağlanan DeviceInformationKind ile eşleşen cihazlar üzerinde numaralandırma yaptığınızdan emin olursunuz. Örneğin, bir DeviceInterface nesnesi bulabilir ve ardından üst Device nesnesinin bilgilerini almak için bir sorgu çalıştırabilirsiniz. Bu ana nesne ek bilgiler içerebilir.
DeviceInformation nesnesinin özellik paketinde bulunan özelliklerin, cihazın DeviceInformationKind bağlı olarak değişeceğini unutmayın. Belirli özellikler yalnızca belirli türlerde kullanılabilir. Hangi özelliklerin hangi türler için kullanılabildiği hakkında daha fazla bilgi için Cihaz bilgisi özellikleri bölümüne bakın. Bu nedenle, yukarıdaki örnekte, üst Aygıt'ı aradığınızda DeviceInterface cihaz nesnesinden elde edilemeyen daha fazla bilgiye erişebilirsiniz. Bu nedenle, AQS filtre dizelerinizi oluşturduğunuzda, numaralandırdığınız DeviceInformationKind nesneleri için istenen özelliklerin kullanılabilir olduğundan emin olmak önemlidir. Filtre oluşturma hakkında daha fazla bilgi için bkz. Cihaz seçici oluşturma.
AssociationEndpoint,AssociationEndpointContainer veya AssociationEndpointService nesnelerini numaralandırırken, kablosuz veya ağ protokolü üzerinden numaralandırmış durumdasınız. Bu durumlarda , FindAllAsync kullanmamanızı ve bunun yerine CreateWatcher'ı kullanmanızı öneririz. Bunun nedeni, ağ üzerinden yapılan aramaların genellikle NumaralandırmaCompleted oluşturulmadan önce 10 veya daha fazla saniye zaman aşımına uğramayacak arama işlemleriyle sonuçlanmasıdır. FindAllAsync , EnumerationCompleted tetiklenene kadar işlemini tamamlamaz. DeviceWatcher kullanıyorsanız, EnumerationCompleted ne zaman çağrılırsa çağrılsın gerçek zamana daha yakın sonuçlar elde edersiniz.
Cihazı daha sonra kullanmak üzere kaydetme
Herhangi bir DeviceInformation nesnesi iki bilgi parçasının birleşimiyle benzersiz olarak tanımlanır: DeviceInformation.Id ve DeviceInformation.Kind. Bu iki bilgi parçasını saklarsanız, bu bilgileri CreateFromIdAsync'e sağlayarak bir DeviceInformation nesnesini kaybolduktan sonra yeniden oluşturabilirsiniz. Bunu yaparsanız, uygulamanızla tümleşen bir cihaz için kullanıcı tercihlerini kaydedebilirsiniz.
Windows developer