コード例 #1
0
ファイル: MainForm.cs プロジェクト: bcc32/AlarmApp
 public MainForm()
 {
     InitializeComponent();
     soundFileDialog.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
     challengeFileDialog.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
     wmPlayer = new WMPLib.WindowsMediaPlayer();
     defaultPlaybackDevice = new CoreAudioController().DefaultPlaybackDevice;
 }
コード例 #2
0
        public CoreAudioSession(CoreAudioDevice device, IAudioSessionControl control)
        {
            ComThread.Assert();

            // ReSharper disable once SuspiciousTypeConversion.Global
            var audioSessionControl = control as IAudioSessionControl2;

            // ReSharper disable once SuspiciousTypeConversion.Global
            var simpleAudioVolume = control as ISimpleAudioVolume;

            if (audioSessionControl == null || simpleAudioVolume == null)
            {
                throw new InvalidComObjectException("control");
            }

            _controlPtr          = Marshal.GetIUnknownForObject(control);
            _audioSessionControl = new ThreadLocal <IAudioSessionControl2>(() => Marshal.GetUniqueObjectForIUnknown(_controlPtr) as IAudioSessionControl2);
            _meterInformation    = new ThreadLocal <IAudioMeterInformation>(() => Marshal.GetUniqueObjectForIUnknown(_controlPtr) as IAudioMeterInformation);
            _simpleAudioVolume   = new ThreadLocal <ISimpleAudioVolume>(() => Marshal.GetUniqueObjectForIUnknown(_controlPtr) as ISimpleAudioVolume);


            Device = device;

            _deviceMutedSubscription = Device.MuteChanged.Subscribe(x =>
            {
                OnMuteChanged(_isMuted);
            });

            _stateChanged     = new Broadcaster <SessionStateChangedArgs>();
            _disconnected     = new Broadcaster <SessionDisconnectedArgs>();
            _volumeChanged    = new Broadcaster <SessionVolumeChangedArgs>();
            _muteChanged      = new Broadcaster <SessionMuteChangedArgs>();
            _peakValueChanged = new Broadcaster <SessionPeakValueChangedArgs>();

            AudioSessionControl.RegisterAudioSessionNotification(this);

            RefreshProperties();
            RefreshVolume();
        }
コード例 #3
0
        public CoreAudioSessionController(CoreAudioDevice device, IAudioSessionManager2 audioSessionManager)
        {
            if (audioSessionManager == null)
            {
                throw new ArgumentNullException(nameof(audioSessionManager));
            }

            ComThread.Assert();

            _device = device;
            _audioSessionManager = audioSessionManager;
            _audioSessionManager.RegisterSessionNotification(this);
            _sessionCache = new List <CoreAudioSession>(0);

            _sessionCreated      = new Broadcaster <IAudioSession>();
            _sessionDisconnected = new Broadcaster <string>();

            RefreshSessions();

            _processTerminatedSubscription = ProcessMonitor.ProcessTerminated.Subscribe(processId =>
            {
                RemoveSessions(_sessionCache.Where(x => x.ProcessId == processId));
            });
        }