コード例 #1
0
ファイル: AudioEngine.cs プロジェクト: mshish/micser
        private async void VolumeNotifyReceived(object sender, AudioEndpointVolumeCallbackEventArgs e)
        {
            await Task.Run(() =>
            {
                var modules = _modules.OfType <AudioModule>().Where(m => m.UseSystemVolume).ToArray();
                foreach (var module in modules)
                {
                    module.Volume  = e.MasterVolume;
                    module.IsMuted = e.IsMuted;

                    var moduleDto = _moduleService.GetById(module.Id);

                    if (moduleDto.State == null)
                    {
                        moduleDto.State = module.GetState();
                    }

                    moduleDto.State.UseSystemVolume = true;
                    moduleDto.State.IsMuted         = e.IsMuted;
                    moduleDto.State.Volume          = e.MasterVolume;

                    _moduleService.Update(moduleDto);

                    _apiClient.SendMessageAsync("modules", "updatevolume", moduleDto);
                }
            }).ConfigureAwait(false);
        }
コード例 #2
0
        private void OnEndpointVolumeChanged(object sender, AudioEndpointVolumeCallbackEventArgs e)
        {
            if (!_isNotifyEnabled)
            {
                _isNotifyEnabled = true;
                return;
            }

            VolumeChanged?.Invoke(this);
        }
コード例 #3
0
        /// <summary>
        /// Receive volume change notification and reflect changes on our slider.
        /// </summary>
        /// <param name="data"></param>
        public void OnVolumeNotification(object sender, AudioEndpointVolumeCallbackEventArgs aEvent)
        {
            lock (_volumeTable)
            {
                if (_isInternalVolumeChange)
                {
                    return;
                }

                if (aEvent != null)
                {
                    //Update volume slider
                    if (iAudioEndpointVolume != null)
                    {
                        // Force a couple of settings for Windows 10
                        if (OSInfo.OSInfo.Win10OrLater() && VolumeHandler.Instance.VolumeStyle() == 5)
                        {
                            var volumePercentage = (int)Math.Ceiling(iAudioEndpointVolume.MasterVolumeLevelScalar * 100f);
                            _volume = ConvertVolumeToStepsEvent(volumePercentage);
                        }
                        else
                        {
                            // Needed to use default step issue 2 of 2 instead of 6 of 6
                            _volume = (int)Math.Round(aEvent.MasterVolume * VolumeMaximum);
                        }

                        _isMuted = aEvent.IsMuted;

                        // Store current volume value
                        _lastVolume = (int)Math.Ceiling(iAudioEndpointVolume.MasterVolumeLevelScalar * 100f);
                    }
                }

                if (VolumeHandler.Instance != null)
                {
                    VolumeHandler.Instance.mixer_UpdateVolume();
                }
            }
        }
コード例 #4
0
ファイル: Core.cs プロジェクト: catright/Wale
 private void AEV_NotifyRecived(object sender, AudioEndpointVolumeCallbackEventArgs e)
 {
     L.MSD.Update(e.IsMuted, e.MasterVolume);
 }
コード例 #5
0
 private void AudioEndpointVolume_OnVolumeNotification(object sender, AudioEndpointVolumeCallbackEventArgs e)
 {
     // Not used
     // here
 }