meego上的音乐播放器服务程序

转载时请注明出处和作者联系方式
文章出处:http://blog.csdn.net/jack0106 
作者联系方式:冯牮 fengjian0106@yahoo.com.cn

 

 

最近做内部培训,想找一些源代码和同事一起分析学习。挑了一下,最终选中bognor-regis源代码(可以从http://git.moblin.org/cgit.cgi/bognor-regis/ 下载)。bognor-regis是moblin时代开发的一款音乐播放程序,一直沿用到meego平台上,在Ubuntu上,同样可以安装(sudo apt-get install bognor-regis)。之所以选中bognor-regis,主要考虑以下几个原因:

1. bognor-regis代码量不大,不会给人恐惧感。

2. 代码写的很漂亮,看代码的时候,是在享受,而不是抱怨。

3. 程序逻辑简单,分析的时候很容易建立对象模型。

4. 使用到了gobject,dbus,tracker,gstreamer,都是比较基础的一些库,非常适合学习。

5. 没有界面,但是功能完整(middleware),很好的体现出了分层设计的魅力。

 

通常的音乐播放器,都是单进程程序。bognor-regis在设计的时候,使用了linux上的dbus技术,将程序实现成一个dbus上的服务器进程,这样的话,就和GUI分离开了。从效果上看,bognor-regis实现了两个功能,一个是播放音频媒体文件(播放,暂停,下一首,上一首等操作),另一个是对播放列表的管理(仅仅是运行时的一个位于内存中的列表,并不会同步到数据库或文件系统中,位于数据库或文件系统上的播放列表,需要由GUI程序来实现,并且负责和bognor-regis中的播放列表同步)。

 

设计成独立的一个服务器程序,我认为是出于这样的一个考虑----多个GUI程序,可以共享bognor-regis中的播放列表,并且都可以对其进行基本操作。试想有这样的一个操作场景,首先打开音乐播放器,添加好想听的曲目,然后最小化到后台播放,接着,打开另外一个GUI程序,比如电子书阅读器,边看书边听歌。在看书的过程中,我想跳到下一首歌曲,或者是查看一下当前播放的歌曲名,这种情况下,该如何操作?如果播放器只是一个普通的单进程程序,那么我要做的操作是最小化电子书阅读器,最大化音乐播放器,然后才能选下一首曲目。这个操作流程,在PC上,可能大家都是可以接受的,毕竟屏幕很大,程序切换很快,动一下鼠标,操作还是很顺畅的,而且不一定需要最小化操作。但是,在小屏幕设备上,这种操作流程,则会变得费时一些,尤其是后台任务比较多的时候,如果想回到播放器程序,可能还得先在任务管理器中找到播放器程序,然后才能最大化。有了bognor-regis,就可以避免程序切换操作了,在电子书阅读器程序中,可以很容易的对播放列表进行操作,只需要添加很少量的代码,就可以实现,而且,用户体验可以得到更好的设计和整合。

 

要想达到上面描述的这种使用价值,bognor-regis的接口,就必须设计的充分的合理,并且同时保持简洁。我觉得,bognor-regis做到了这一点。bognor-regis提供的dbus调用接口的xml描述如下:

 

 

简单描述一下其中的method,可以分为如下的几类:

1. 播放列表管理,包括添加曲目,删除曲目,移动曲目的索引位置以及获取播放列表中的所有曲目。函数包括 AppendUris, InsertUris,RemoveRange, MoveItem,ListUris。

2. 对播放列表进行选择操作(单选)或者是获取当前被选中的曲目索引。函数包括 SetIndex, GetIndexUri, GetIndex。

3. 操作播放器的循环模式。函数包括SetRepeatMode和GetRepeatMode。

4. 播放或停止,下一首或上一首。函数包括Play,Stop,Next,Previous。

5. 获取当前的播放状态。函数是GetState。

6. 操作当前播放曲目的播放进度。函数包括SetPosition 和 GetPosition。

 

熟悉了这些method之后,剩下的那些signal,望名知意,就也很容易理解了。

 

还有另外一个因素,也会促使将bognor-regis设计成一个dbus服务程序----和GUI的彻底分离。meego是可以运行在多种平台上的系统,包括平板,手机,车载设备,上网本,网络电视等,每种设备的屏幕大小都不相同,用户体验差别也很大,针对每个平台,都完全独立的开发一个音乐播放器,这个开发成本相对就比较大,与其在每个平台上都单独编码,不如把可以通用的部分独立出来,做成一个和GUI无关的模块,这样的话,针对每个平台,只需要重新设计用户体验就可以了。meego平台的魅力之一,也在于此。

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值