/// <summary> /// Called when page is loaded /// Initialize app assets such as skills /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Page_Loaded(object sender, RoutedEventArgs e) { // Disable buttons while we initialize await UpdateMediaSourceButtonsAsync(false); // Initialize helper class used to render the skill results on screen m_renderer = new ObjectTrackRenderer(UIOverlayCanvas); m_lock.Wait(); { NotifyUser("Initializing skills..."); m_detectorDescriptor = new ObjectDetectorDescriptor(); m_detectorExecutionDevices = await m_detectorDescriptor.GetSupportedExecutionDevicesAsync(); await InitializeObjectDetectorAsync(); m_trackerDescriptor = new ObjectTrackerDescriptor(); m_trackerExecutionDevices = await m_trackerDescriptor.GetSupportedExecutionDevicesAsync(); await InitializeObjectTrackerAsync(); await UpdateSkillUIAsync(); } m_lock.Release(); // Ready to begin, enable buttons NotifyUser("Skill initialized. Select a media source from the top to begin."); await UpdateMediaSourceButtonsAsync(true); }
/// <summary> /// Initialize the skill related members /// </summary> /// <param name="executionDevice"></param> /// <returns></returns> private async Task InitializeSkillAsync(ISkillExecutionDevice executionDevice = null) { m_descriptor = new ObjectTrackerDescriptor(); m_availableExecutionDevices = await m_descriptor.GetSupportedExecutionDevicesAsync(); if (m_availableExecutionDevices.Count == 0) { NotifyUser("No execution devices available, this skill cannot run on this device", NotifyType.ErrorMessage); return; // Abort } // Either create skill using provided execution device or let skill create with default device if none provided if (executionDevice != null) { m_skill = await m_descriptor.CreateSkillAsync(executionDevice) as ObjectTrackerSkill; } else { m_skill = await m_descriptor.CreateSkillAsync() as ObjectTrackerSkill; } m_bindings = new List <ObjectTrackerBinding>(); m_trackerHistory = new List <Queue <TrackerResult> >(); }