Как правильно использовать пространство имен Windows.Media.Miracast? - PullRequest
0 голосов
/ 09 мая 2019

Я смотрю на приведение экрана через Miracast в приложении, но не знаю, как использовать пространство имен Windows.Media.Miracast.В Интернете существует ограниченная информация из-за короткого срока действия обновления Windows 10 1903, частью которого является пространство имен.

Единственное, что я нашел на данный момент, это эта документация .

Мой вопрос: кто-нибудь знает, как правильно использовать это пространство имен?Любые примеры или ресурсы, найденные в Интернете, будут очень полезны.

Cheers.

1 Ответ

0 голосов
/ 18 июня 2019

Эти три примера проектов демонстрируют различные исходные API-интерфейсы MiraCast, которые можно использовать из приложений UWP.Не уверен насчет внешнего UWP.

I 'Я лично использую код, подобный следующему, в Windows IoT Core, чтобы отыграть весь мой экран

Сканирование устройств:

miraDeviceWatcher = DeviceInformation.CreateWatcher(CastingDevice.GetDeviceSelector(CastingPlaybackTypes.Video)); 
miraHandlerAdded = new TypedEventHandler<DeviceWatcher, DeviceInformation>(async (watcher, deviceInfo) =>
{
   await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
   {
      //Add each discovered device to our listbox
      CastingDevice addedDevice = await CastingDevice.FromIdAsync(deviceInfo.Id);
      var disp = new CastingDisplay(addedDevice); //my viewmodel
      MiraDevices.Add(disp); //ObservableCollection
   });
});
miraDeviceWatcher.Added += miraHandlerAdded;

Подключение к выбранному устройству:

public async Task StartCasting(CastingDisplay castee)
{
   //When a device is selected, first thing we do is stop the watcher so it's search doesn't conflict with streaming
   if (miraDeviceWatcher.Status != DeviceWatcherStatus.Stopped)
   {
      miraDeviceWatcher.Stop();
   }

   //Create a new casting connection to the device that's been selected
   connection = castee.Device.CreateCastingConnection();
   //Register for events
   connection.ErrorOccurred += Connection_ErrorOccurred;
   connection.StateChanged += Connection_StateChangedAsync;

   var image = new Windows.UI.Xaml.Controls.Image();
   await connection.RequestStartCastingAsync(image.GetAsCastingSource());
}

Это изображение просто используется в качестве источника приведения.Как только соединение установлено, весь мой экран транслируется.Поведение не задокументировано.Надеемся, что это не будет исправлено в следующем обновлении.

...