shoutcast 例子分析

本文档详细介绍了S60平台上的SHOUTcast流媒体播放应用的设计与实现,包括Application UI和Engine的架构,重点分析了CShoutcastAdapter类及其核心组件,如CEventDispatcher、CMetaDataEntry和CShoutcastStream。通过Adapter模式,实现了对SHOUTcast流数据的播放,同时支持元数据的处理和显示。此外,还涵盖了连接、发送请求、接收响应和解析流数据的流程。
摘要由CSDN通过智能技术生成
 

    程序源代码及自带文档下载

概述 

    Internet Radio是一个为S60第三版设备开发的声音应用参考实现,支持SHOUTcast (America Online) 协议。

    目的:为开发更多新颖的S60声音应用提供一个学习工具。

 

设计与实现

    两个主要组成部分,UI和Engine。(一般比较好的程序都是这么设计的,以保证更好的模块化)。

  • UI:负责用户界面逻辑,以及展示Engine的数据
  • Engine:分配资源,声音回放,与其他子系统交互,基于ECom Plugin架构

    在多处使用了Adapter设计模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

Application UI

    普通的单view架构,类图如下所示,这是标准的Symbian图形化应用程序框架之一(共有三种),大多数Symbian应用程序都是用的这个框架。

    AppUi实现了MAdapterObserver接口,其作用是由CPlayerAdapter和Engine(通过CPluginAdapter)回调显示元数据及状态信息。

    class CS60InternetRadioAppUi : public MAdapterObserver, public CAknAppUi 

    另外该类又包含了如下类。

    private: // Data    
        CPlayerAdapter*   iPlayerAdapter; 
// the audio player adapter   播放本地文件
        MAudioAdapter* iAudioAdapter; 
// the current audio adapter   一个统一的接口
        CS60InternetRadioView* iAppView; 
//the application view       界面显示部分
        RPointerArray<CPluginAdapter> iAudioPlugins;
// list of plugin adapters  播放shoutcast流

     CPlayerAdapter封装了系统的CMdaAudioPlayerUtility类进行本地文件播放,并提供相应接口给AppUi调用。

     CPluginAdapter提供了实现EComPlugin接口,实现shoutcast流数据的播放。

     MAudioAdapter抽象出了播放本地文件和shoutcast流内容的所需接口,以及一些界面显示接口

     CPlayerAdapter和CPluginAdapter都实现MAudioAdapter接口,UI可以使用同一个接口处理播放本地文件或者播放Shoutcast流数据。

class CPlayerAdapter : public CBase, public MAudioAdapter, public MMdaAudioPlayerCallback 
class CPluginAdapter : public CBase,  public MAudioAdapter

    MAudioAdapter* iAudioAdapter;
    if ( iAudioPlugins.Count() ) // If plugin adapters were found, use the first one on the list.
        {
        iAudioAdapter = iAudioPlugins[0];
        }
    else // otherwise, we use the file player adapter
        {
        iAudioAdapter = iPlayerAdapter;
        }

     AppView主要处理界面上的Label的显示以及进行按键处理,如左右键为调低、调高音量。


Application Engine

       程序引擎由两部分组成,但使用同一个接口MAudioAdapter播放本地文件和shoutcast流

 1. Shoutcast stream播放功能采用ECom Plugin实现,具体通过CShoutcastAdapter类实现(下一节介绍)。
 2. 本地文件播放功能通过CPlayerAdapter类实现,封装了系统的CMdaAudioPlayerUtility(Adapter模式)。

CPlayerAdapter类图

封装了系统的CMdaAudioPlayerUtil

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值