小李在某地一家中学当保安,平时工作除了看门护院之外,还兼职负责全校广播打铃的工作。最近,学校唯一的一台广播机却坏了,小李只能每天掐着各种时间节点去手动播放大铃声以及广播歌曲,这可把小李累得不要不要的。就在昨天上午,小李因为刷抖音入迷,忘了打上课铃,让10分钟的课间休息变成了半个多小时,把学生们高兴坏了,有人高兴就有人不高兴,王校长得知此事勃然大怒,把小李叫到办公室一顿训斥,“干得了就干,干不了赶紧滚蛋!”。
这可把小李给吓住了,这年头找一份工作可不容易。广播机虽然已找厂家来修,但因为厂家早已停产这款老型号,零配件都没有了,换新机吧,财务那边的申请流程又太长,不是一两周可以解决的。小李想来想去,决定向自己的好朋友“八两”求助。八两听完小李的哭诉,已基本了解到这个需求,决定为小李量身定做一款软件工具,帮助小李保住这份饭碗。
广播机的主要功能无非就是设置定时播放指定的音频文件清单,并可以设置循环方式和指定播放时长,另外就是通过调音台或者直接一根音频线连接校园大喇叭,这样的功能完全是可以通过电脑软件实现的,而且用电脑软件还更方便修改配置和调整播放清单。
我的计划是,通过Windows自带的Media Player控件实现音频文件播放,然后通过代码设计一套节目编排逻辑,支持多套节目播放规则,每套节目可以单独保存为一个工程文件,这样便于实现不同季节的上课时间调整。
首先,我们根据软件需求,设计了一个PlayTask类,用于存储播放任务,代码如下:
public class PlayTask
{
public bool Enabled = true;
public string Name = "新任务";
public TimeSpan StartTime = TimeSpan.Zero;
public TimeSpan TimeLen = TimeSpan.Zero;
public int RepeatCount = 1;
public List WeekPlan = new List(new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday, DayOfWeek.Sunday });
public List MusicList = new List();
}
当我们创建播放计划时,需要对一天多个时间点设置播放任务,每一个任务都可以用PlayTask来进行表示,对于这个类的定义,如果一时半会不好理解,可以再看一张软件界面截图:
这个任务编辑界面,与PlayTask的定义完全对应起来。对于每个播放任务,可以设置的属性包括:
Enabled:是否启用这个任务。
Name:任务的名称,比如可以设置为“第一节(上课)”“第一节(下课)”“放学”等。
StartTime:开始执行播放任务的时间,这里用了TimeSpan的类型,是取DateTime的TimeOfDay属性值。
TimeLen:播放时长限制。如果设置为0则不限制,按照音乐文件总时长及重复次数进行播放。如果设置为指定秒数,则到时间点后无论音乐文件是否播放完毕都会强制结束。
RepeatCount:重复播放次数。
WeekPlan:表示这个任务在一个星期的哪些天中应该被执行。比如上下课的铃声,在周一至周五应该被执行,而周六周日通常不应该被执行。
MusicList:音乐文件的路径列表。每个任务至少应该包含一个音乐文件,也可以包含多个,多个文件时则按顺序进行播放。
首先要添加Windows Media Player控件到工具箱中,在“选择工具箱项”对话框中选择“COM组件”,找到并勾选“Windows Media Player”,点击“确定”。如下图:
然后将引入的Windows Media Player控件放置在窗体界面上,并修改名称为wmp。
要执行指定的播放任务时,可以参考一下代码:
private void play(PlayTask task)
{
wmp.Ctlcontrols.stop();
wmp.currentPlaylist.clear();
foreach (string music in task.MusicList)
{
wmp.currentPlaylist.appendItem(wmp.newMedia(music));
}
wmp.Ctlcontrols.play();
}
如果要设置播放器的声音,并禁止向用户显示播放器的控制界面,可以使用如下代码:
wmp.settings.volume = 100; //音量100
wmp.Ctlenabled = false; //禁用控制
经过1天的开发和调试优化,八两将软件发送给小李,小李拿到软件后,立即兴奋地到广播室测试,美妙而且准时的校园广播再次响起,王校长满意地对小李说,“小伙子好样的,当保安就是要这样一专多能!”
最终软件成品界面如下:
软件下载地址为https://download.csdn.net/download/yuechi01/88636163