即可。这样的设计模式对于开发商来说有很大的好处[18],例如Java语言的开发周期明显比C、C++的开发周期短,这正好满足了移动智能终端的需求,移动智能终端只有有了大量的应用作为支撑,才能吸引更多的用户,满足各类用户的需求。
2.3 Android应用程序
Android应用程序主要是由以下几种组件构成:
① Activity:该组件是Android应用程序的窗口,主要负责与用户进行交互。
② Service:该组件没有可视化的界面,主要是在后台运行,通过Service的
使用,可以让一些复杂的操作、服务在后台运行,而完全不影响前台界面的用户体验[19]。
③ Broadcast Receives:该组件主要是用来接受广播信息,并响应信息。通常
情况下,广播信息是由系统发出来的,例如受到一条来电、手机电量不足等。当然,应用程序也可以发送广播信息[20]。一个应用程序可以接收多个广播消息发送者发来的消息,此动作是没有用户界面的,但在进行消息响应可以启动一个界面活动来与用户交互。
④ Content Providers:该组件主要是用来为其他的应用程序提供数据的,通过
它可以使应用程序与其他应用程序进行数据共享。
除了这些组件以外,每一个Android应用程序还必须有一个配置文件:AndroidManifest.xml[22]。在这个配置文件里面定义了Android应用程序中所用到的组件及组件的一些约束信息,同时还涉及到应用程序对网络、存储卡等的访问权限控制,只有配置中具有了某种权限,应用程序才能进行相应的操作。否则,即使在程序中应用,也不能达到目的[23]。
2.4 流媒体技术
流媒体主要是指采用流式传输的方式进行多媒体的播放,其中数据的来源是网络,其实现了实时顺序传输。流媒体是通过流媒体服务器将媒体转化为数据包通过网络传输由客户端接收,客户端需要采用专门的解压手段对数据流进行解压,并将多媒体流播放出来,最终将多媒体信息传达给用户[24]。
2.4.1 流媒体技术概述
流媒体技术主要是指以流的形式进行音/视频文件的传输,并将运用流式技术进行播放的技术。此种流式传播方式首先需要将视频进行编码压缩,采用特定的技术编码压缩成数据包,通过网络将此数据包传送到接收端,接收端接收到实时连续的数据流。采用这种技术的好处时,用户不需要等待整个视频下载完成来观看视频,可以实现实时地观看网络上的视频。
流式传输方式主要分为两种:实时传输和顺序传输。实时流式传输主要实现了视频的实时播放,其要求媒体信号带宽与网络带宽匹配。要达到这样的要求,显然不能使用HTTP协议,取而代之的是特定的流媒体传输协议[25]。实时流式传输主要应用在了对实时性要求较高的地方,例如直播赛事、现场报道等。从本质上来讲,流媒体传输是不能停止的,但在实际传输过程中也是允许暂停的,由于对实时性的要求,实时传输就得与实际的网络带宽匹配,这样就会导致在网络情况不好时,视频的质量非常不好[26-27]。要解决这个问题,可以采用顺序传输方式。顺序流式传输方式是指在流媒体客户端中对流媒体数据进行顺序下载观看的过程,用户可以观看已经下载的媒体数据,但是不能查看没有下载的数据,但是可以回退去看已经下载的数据。这种方式适合在对实时性要求不是很高的场合,它在网络环境差的情况下也能播放出完整的流媒体数据,使视频能够正常地播放。其在传输时可以采用HTTP协议,运用此协议可以发送流媒体数据,因此该协议又被称为HTTP流式传输协议。
这两种传输方式还有一个区别:实时传输选用的是专门提供给流媒体传输的传输协议,其有可能会受到防火墙的阻拦,而运用HTTP流式传输协议并不会受到防火墙的阻拦。
2.4.2 视频压缩编解码技术
目前,在网络中的视频压缩解码技术主要有H.264、MPEG-4等,其中最为常用的就是H.264视频编解码技术,其原因在于H.264视频编解码技术具有高压缩比率,在网络传输方面占有较大的优势。就同等质量的图像而言,采用H.264视频编解码技术比采用MPEG-2视频编解码技术的压缩比率高出1倍多,是采用MPEG-4视频编解码技术的1.5到2倍[28-30]。也就是说,H.264视频编解码技术虽说压缩比率大,但是并没用影响到其图像的质量。H.264视频编解码技术采用分层设计的思想,主要分为了视频编码层和网络提取层,此种设计非常适合流媒体传输,并且H.264视频编解码技术还具有以下特点:图像质量高、低码流、容错性强、网络适应度高等。其中容错性主要表现在当网络不稳定时,H.264视频编解码技术提供了一些工具用于解决网络丢包等问题。而网络高适应度主要在于H.264视频编解码技术有网络抽取层的支撑,该层为上层屏蔽了底层的复杂性,使视频文件通过调用接口即可实现在不同的网络环境中进行传输[31]。下面将重点讲解H.264视频编解码技术的两层结构。
视频编码层:本层主要负责视频内容的高效表示,包括了基于块的运动补偿混合编码以及一些新的特性。
网络提取层:本层主要负责对视频数据进行打包和传输,需要注意的是打包和传输方式要视网络环境而定。其用到了底层网络的分段格式,将数据封装好并进行传送[32]。
2.4.3 流媒体传输协议
流媒体技术中最核心的部分就是流式传输技术,通过流式传输技术的使用实现了流媒体服务器与流媒体客户端之间的通信。目前,比较常用的流媒体传输协议为RTP(Real-Time Transport Protocol,实时传输协议)、RTSP(Real-Time Streaming Protocol,实时流媒体协议)、RTCP(Real-time Transport Control Protocol, 实时传输控制协议)[33],其在TCP/IP协议栈中的位置如图2.2所示。
图2.2 流媒体传输协议在TCP/IP协议栈中的位置
Fig. 2.2 The position of stream transport protocol in TCP/IP protocol stack
① RTP实时传输协议
RTP主要是为用户提供连续媒体数据的实时传输服务,其基于多播或者单播网络实现,而RTCP协议是RTP协议的控制部分,主要负责网络数据流控制,包括网络数据流拥塞控制、传输质量监控等[34]。RTP协议提供点对点的通信,可以在多播网络上进行实时数据传输。这种点对点、多播的形式可以保证时间信息与实现流的同步,RTP一般采用UDP来进行数据传输,其具有实现简单、不需要路由器的支持、控制信息所占带宽小等优点。
RTP协议是位于传输层上的协议,其可以建立在TCP/UDP协议之上,但一般情况下是采用RTP、UDP进行实时传输,其在音/视频传输过程中,运用了UDP的端口号和校验和,同时继承了UDP协议传输延迟小的优点。当需要发送音/视频数据时,该数据被封装成RTP包,接着RTP包封装入UDP包中,再封装入IP包中进行传输[35]。当接收到音/视频数据包时,同样需要通过UDP套接借口输入RTP包,然后将音/视频数据抽取出来。
RTP的端口号为1025到65535间选择,通常情况下为一个偶数的UDP端口号,由于RTP包中只包括了音/视频数据,而对于音/视频的控制则由RTCP协议来完成,RTCP的端口号为RTP端口号的下一个奇数UDP端口号[36]。当进行音/视频数据传输时,需要RTP与RTCP协同工作,在RTP数据包传送期间,需要使用RTCP协议来进行控制信息的周期性传送。通过RTCP包可以对已经发送的数据进行丢包统计、了解拥塞情况等。该数据信息也是通过封装为UDP数据包进行传送的,服务器可以根据RTCP包中的信息对传输速度进行调整。
RTP在工作时分为了两个层次:RTP Session、RTP Stream。
RTP Session:即RTP会话,包含了传给目的地对的所有通信量。注意当进行单播时,RTP Session的接收方为一个地址;当进行组播时,RTP S
上一篇:
基于Android平台的手机电子书阅读器设计
下一篇:
试论APP广告在手机中的应用