Example #1
0
        private void CreateZone(XElement zoneXml)
        {
            var players = zoneXml.Descendants("ZoneGroupMember").Where(x => x.Attribute("Invisible") == null).ToList();

            if (players.Count > 0)
            {
                var zone = new SonosZone((string)zoneXml.Attribute("Coordinator"));

                foreach (var playerXml in players)
                {
                    var player = new SonosPlayer
                    {
                        Name         = (string)playerXml.Attribute("ZoneName"),
                        UUID         = (string)playerXml.Attribute("UUID"),
                        ControlPoint = ControlPoint
                    };

                    zone.AddPlayer(player);
                    Players.Add(player);

                    // This can happen before or after the topology event...
                    if (playerDevices.ContainsKey(player.UUID))
                    {
                        player.SetDevice(playerDevices[player.UUID]);
                    }
                }

                Zones.Add(zone);
            }
        }
        public void AddPlayer(SonosPlayer player)
        {
            if (player.UUID == CoordinatorUUID)
            {
                Coordinator = player;
            }

            players.Add(player);
        }
        public void SetVolume(ushort volume)
        {
            SonosPlayer pl = gtw.FindPlayerByName(playerName);

            if (pl != null)
            {
                pl.SetVolume(volume);
            }
        }
        public void UnMute()
        {
            SonosPlayer pl = gtw.FindPlayerByName(playerName);

            if (pl != null)
            {
                pl.UnMute();
            }
        }
        public void StopPlayer()
        {
            SonosPlayer pl = gtw.FindPlayerByName(playerName);

            if (pl != null)
            {
                pl.Pause();
            }
        }
        public void PlayFavorite(int favoriteNumber)
        {
            IList <SonosItem> si = gtw.GetSonosFavorites();

            if (favoriteNumber > si.Count)
            {
                return;
            }

            SonosPlayer pl = gtw.FindPlayerByName(playerName);

            if (pl != null)
            {
                pl.SetAVTransportURI(new SonosTrack {
                    Uri      = si[favoriteNumber].Track.Uri,
                    MetaData = si[favoriteNumber].Track.MetaData
                });
                Thread.Sleep(1000);
                pl.Play();
            }
        }
        private void SonosPlayerController_StateChanged(SonosPlayer obj)
        {
            currentState.CurrentSeekPosition = obj.CurrentState.RelTime.ToString();
            currentState.CurrentVolume       = obj.CurrentState.Volume;
            currentState.CurrentMuteState    = obj.CurrentState.MuteStatus;
            currentState.CurrentPowerState   = obj.CurrentStatus == PlayerStatus.Playing ? true : false;

            List <string>     stationList = new List <string>();
            IList <SonosItem> gtwList     = gtw.GetSonosFavorites();

            if (gtwList != null)
            {
                foreach (SonosItem si in gtw.GetSonosFavorites())
                {
                    stationList.Add(si.DIDL.Title);
                }
                currentState.CurrentList = stationList.ToArray();
            }

            if (StateChanged != null)
            {
                StateChanged(this, new DeviceStateChangedEventArgs(currentState));
            }
        }