ProjectionManager.StartProjectingAsync API вызывает исключение.
Что мне нужно?
У меня есть приложение UWP. При нажатии кнопки мне нужно выбрать устройство miracast и подключиться к нему и проецировать новый вид на него (или страницу).
ОС: Windows 10, Versio 1709 (сборка ОС 16299,492)
projectorSelectorQuery = "(System.Devices.DevObjectType:= 5 AND System.Devices.Aep.ProtocolId:= \"{0407d24e-53de-4c9a-9ba1-9ced54641188}\" AND System.Devices.WiFiDirect.Services:~=\"Miracast\")";
Таким образом, будут видны только устройства miracast.
var outputDevices = await DeviceInformation.FindAllAsync(projectorSelectorQuery);
Я выбрал устройство miracast и начал проецировать на него.
if (ProjectionViewPageControl == null)
{
// First, create a new, blank view
var thisDispatcher = Window.Current.Dispatcher;
await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
// ViewLifetimeControl is a wrapper to make sure the view is closed only
// when the app is done with it
ProjectionViewPageControl = ViewLifetimeControl.CreateForCurrentView();
// Assemble some data necessary for the new page
var initData = new ProjectionViewPageInitializationData();
initData.MainDispatcher = thisDispatcher;
initData.ProjectionViewPageControl = ProjectionViewPageControl;
initData.MainViewId = thisViewId;
// Display the page in the view. Note that the view will not become visible
// until "StartProjectingAsync" is called
var rootFrame = new Frame();
rootFrame.Navigate(typeof(BlankPage1), initData);
Window.Current.Content = rootFrame;
// The call to Window.Current.Activate is required starting in Windos 10.
// Without it, the view will never appear.
Window.Current.Activate();
});
}
try
{
// Start/StopViewInUse are used to signal that the app is interacting with the
// view, so it shouldn't be closed yet, even if the user loses access to it
ProjectionViewPageControl.StartViewInUse();
// Show the view on a second display that was selected by the user
await ProjectionManager.StartProjectingAsync(ProjectionViewPageControl.Id, thisViewId, selectedDisplay);
ProjectionViewPageControl.StopViewInUse();
}
//catch(InvalidOperationException)
catch (Exception exception)
{
var msg = new MessageDialog(exception.Message + " Stack: " + exception.StackTrace + " Source: " + exception.Source);
await msg.ShowAsync();
}
На самом деле происходит подключение к устройству miracast - это означает, что мой экран зеркально отображен на нем. Но моя страница не проецируется.
Я получаю это исключение