Example #1
0
        private static MasterSessionModel GetMaster(this IDevice device)
        {
            try
            {
                var endpointVolume =
                    (IAudioEndpointVolume)device.Activate(new Guid(GuidValue.External.IAudioEndpointVolume));

                var volumeHandler = new MasterVolumeNotificationHandler(endpointVolume);
                volumeHandler.RegisterMVolumeNotifications();

                var         masterVolume = new MasterAudioSessionVolume(endpointVolume);
                float       volume       = masterVolume.GetVolume();
                bool        muteState    = masterVolume.GetMute();
                ImageSource icon         = device.GetIconSource();
                string      deviceName   = device.GetFriendlyName();
                string      deviceDesc   = device.GetDeviceDesc();
                string      id           = device.GetId();

                return(new MasterSessionModel(deviceName, deviceDesc, Convert.ToInt32(volume * 100), muteState, id, icon,
                                              masterVolume,
                                              volumeHandler));
            }
            catch (Exception e)
            {
                Logger.Error("Failed to create master session", e);
                throw;
            }
        }
Example #2
0
        /// <summary>
        /// Stellt den Empfang einer Quelle sicher.
        /// </summary>
        /// <param name="source">Die gewünschte Quelle.</param>
        public void EnsureFeed(SourceSelection source)
        {
            // Unregister all outstanding requests
            ResetFeeds();

            // Stop current reader if active - and wait for cancel to finish
            if (m_groupReader != null)
            {
                m_groupReader.Cancel();
                m_groupReader.Wait();
            }

            // Create new
            m_groupReader = ProviderDevice.Activate(source);
            m_feeds       = _NoFeeds;

            // Start processing
            m_feedAwaiter = m_groupReader.ContinueWith(task =>
            {
                // Load feed data
                var sources = task.Result;
                if (sources != null)
                {
                    if (IsAllocated)
                    {
                        return(m_feeds = sources.Select(sourceOnGroup => new Feed(sourceOnGroup, this)).ToArray());
                    }
                }

                // None
                return(null);
            });
        }
Example #3
0
        internal static OutputDeviceModel GetOutputDeviceModel(this IDevice device, IDeviceStateNotificationHandler deviceStateNotificationHandler)
        {
            try
            {
                var sessionManager =
                    (IAudioSessionManager2)device.Activate(new Guid(GuidValue.External.IAudioSessionManager2));
                sessionManager.GetSessionEnumerator(out IAudioSessionEnumerator sessionEnum);

                var sessions        = device.GetCurrentSessionList(sessionEnum);
                var sessionProvider = new AudioSessionProvider(sessionManager);
                var master          = device.GetMaster();

                return(new OutputDeviceModel(device, deviceStateNotificationHandler, sessionProvider, master, sessions));
            }
            catch (Exception e)
            {
                Logger.Error("Failed to create output device model", e);
                return(null);
            }
        }
Example #4
0
        private void InstallXapSynchronous(object pathToXap)
        {
            Guid?   guid;
            Version version;
            bool    flag;

            _device.Activate();
            var tempFile = Path.GetTempFileName();

            File.Copy((string)pathToXap, tempFile, true);
            Utils.ReadWMAppManifestXaml(tempFile, out guid, out version, out flag);
            var iconFile = Utils.ExtractIconFile(tempFile);

            if (_device.GetInstalledApplications().Any(x => x.ProductID == guid.Value))
            {
                _lastApp = _device.GetApplication(guid.Value);
            }
            else
            {
                _lastApp = _device.InstallApplication(guid.Value, guid.Value, "NormalApp", iconFile, tempFile);
            }
            _lastApp.Launch();
            XapInstalled(this, null);
        }