示例#1
0
        /// <summary>
        /// 更新播放列表,并写入文件
        /// </summary>
        /// <param name="model">播放列表</param>
        /// <returns>成功写入返回true,否则返回false</returns>
        private bool WritePlayListToFile(AMS_PlayListMd5 model)
        {
            XmlDocument xmlDoc = new XmlDocument();
            //获取应用程序所在文件夹
            string FilePath = PlayerSetting.DefaultVideosPath + "PlayList.xml";

            try
            {
                if (model == null)
                {
                    return(false);
                }
                xmlDoc.LoadXml(model.ToXml());
                DirectoryInfo d = new DirectoryInfo(PlayerSetting.DefaultVideosPath);
                if (!d.Exists)
                {
                    d.Create();
                }
                xmlDoc.Save(FilePath);
                return(true);
            }
            catch (Exception ex)
            {
                SeatManage.SeatManageComm.WriteLog.Write(ex.Message);
                return(false);
            }
        }
示例#2
0
 /// <summary>
 /// 从本地载入播放列表
 /// </summary>
 public bool LoadPlayList()
 {
     try
     {
         string xmlDocPath = PlayerSetting.DefaultVideosPath + "PlayList.xml";
         if (System.IO.File.Exists(xmlDocPath))
         {
             XmlDocument xmlDoc = new XmlDocument();
             xmlDoc.Load(xmlDocPath);
             AMS_PlayListMd5 plm = AMS_PlayListMd5.Parse(xmlDoc.OuterXml);
             //播放列表赋值
             plists = plm.PlayVideoItems;
             //计算整个播放列表播放时间的间隔加上循环间隔时长
             playListTimeLength = plm.PlayListTimeLength + plm.PlayElapsed;
             //TODO:根据当前时间重新排列播放列表
             RearrangePlayList();
             return(true);
         }
         else
         {
             SeatManage.SeatManageComm.WriteLog.Write("播放列表不存在");
             PlayListHandleEvent(this, "本地播放列表不存在!");
             return(false);
         }
     }
     catch
     {
         SeatManage.SeatManageComm.WriteLog.Write("载入播放列表失败");
         PlayListHandleEvent(this, "载入播放列表失败!");
         return(false);
     }
 }
示例#3
0
        /// <summary>
        /// 获取播放列表
        /// </summary>
        private bool DownloadPlaylist(ref AMS_PlayListMd5 model)
        {
            while (true)
            {
                //获取今天的播放列表
                model = null;

                try
                {
                    List <SeatManage.ClassModel.AMS_PlayListMd5> playlist = SeatManage.Bll.AMS_PlayList.GetMd5PlayListByStatus(SeatManage.EnumType.LogStatus.Valid);
                    if (playlist.Count > 0)
                    {
                        model = playlist[0];
                    }
                    else
                    {
                        PlayListHandleEvent(this, "没有有效的播放列表");
                        return(false);
                    }
                    timer1.Stop();
                    timer1.Dispose();
                    return(true);
                }
                catch (Exception ex)
                {
                    PlayListHandleEvent(this, "服务器连接失败,正在重试……");
                    System.Threading.Thread.Sleep(2000);
                    if (s > 300)
                    {
                        timer1.Stop();
                        timer1.Dispose();
                        return(false);
                    }
                }

                //if (model != null)
                //{
                //    timer1.Stop();
                //    timer1.Dispose();
                //    return true;
                //}
                //else
                //{
                //    SeatManage.SeatManageComm.WriteLog.Write(ex.Message);
                //    return false;
                //}
            }
        }
        /// <summary>
        /// 解析播放列表并下载视频文件
        /// </summary>
        /// <param name="model">下载的文件地址</param>
        private List <string> GetDownloadVideoFile(AMS_PlayListMd5 model)
        {
            //存放待下载的媒体文件
            List <string> downloadFiles = new List <string>();

            //播放列表存放的文件夹
            DirectoryInfo direct = new DirectoryInfo(PlayerSetting.DefaultVideosPath);

            if (!direct.Exists)
            {
                direct.Create();
            }
            //下载所有的媒体文件。
            foreach (AMS_VideoMd5Item vm in model.VideoFiles)
            {
                downloadFiles.Add(vm.RelativeUrl);
            }
            return(downloadFiles);
        }
示例#5
0
 /// <summary>
 /// 获取当前应该播放的媒体信息
 /// </summary>
 /// <param name="isOffline">是否脱机运行</param>
 public void Run()
 {
     if (PlayerSetting.IsOffline == "1")
     {
         //从服务器上获取新的播放列表以及媒体文件并且保存到本地
         // get.Run();
         SeatManage.ClassModel.AMS_PlayListMd5 playlistModel = new AMS_PlayListMd5();
         //从服务器上获取新的播放列表
         timer1          = new Timer(1000);
         timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed);
         timer1.Start();
         try
         {
             if (DownloadPlaylist(ref playlistModel))
             {
                 //把新获取的播放列表写入文件
                 if (WritePlayListToFile(playlistModel))
                 {
                     SeatManage.SeatManageComm.WriteLog.Write("播放列表文件写入成功,准备下载……");
                     if (string.IsNullOrEmpty(PlayerSetting.DeviceNo))
                     {
                         SeatManage.SeatManageComm.WriteLog.Write("终端编号为空");
                     }
                     else
                     {
                         TerminalInfoV2 terminal = SeatManage.Bll.TerminalOperatorService.GetTeminalSetting(PlayerSetting.DeviceNo);
                         if (terminal != null)
                         {
                             terminal.IsUpdatePlayList = false;
                             SeatManage.Bll.TerminalOperatorService.UpdateTeminalSetting(terminal);
                         }
                     }
                     List <string> lists = GetDownloadVideoFile(playlistModel);
                     //删除无用的文件
                     DeleteNullFile();
                     DownloadFile(lists);
                 }
                 else
                 {
                     SeatManage.SeatManageComm.WriteLog.Write("播放列表写入失败");
                 }
             }
             else
             {
                 //TODO:没有新的播放列表
             }
         }
         catch (Exception ex)
         {
             SeatManage.SeatManageComm.WriteLog.Write("网络未连接" + ex.Message);
         }
         finally
         {
             timer1.Stop();
         }
     }
     //载入本地的播放列表
     if (LoadPlayList())
     {
         timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
         //播放列表初始化结束,触发事件
         PlayListHandleOver(null, null);
         timer.Start();
     }
 }