智能手机娱乐多媒体软件开发客户端.docx
《智能手机娱乐多媒体软件开发客户端.docx》由会员分享,可在线阅读,更多相关《智能手机娱乐多媒体软件开发客户端.docx(35页珍藏版)》请在冰豆网上搜索。
智能手机娱乐多媒体软件开发客户端
智能手机娱乐多媒体软件开发-客户端
摘要:
现今社会生活紧张,而享受娱乐多媒体是其中最好的舒缓压力的方式之一,本文是基于Android智能手机平台,以java为编程工具,运用软件工程的思想和java的编程思想,完成的智能手机娱乐多媒体软件开发-客户端的论文。
通过与服务器的通信,随时随地的为用户提供最新的娱乐元素,也使设计者更加熟练Android的技术和其在市场上的特点。
相信该人性化设计可以在目前Android平台上绽放出亮点,获得用户的喜爱。
关键词:
娱乐多媒体;Android;智能手机;人性化设计
1引言
目前智能手机的概念早已不再新鲜,智能手机具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。
当前的主流智能手机操作系统主要有IOS,Android,塞班,黑莓等。
其中目前市场份额最大的为Android,占据了半壁江山。
所以Android作为目前最流行的手机智能平台,目前广泛的应用在智能手机上,在智能手机领域掀起了“Android风暴”。
现在我们的生活离不开多媒体,那么手机上的多媒体客户端是必不可少,国内外市场上的此类软件层出不穷,要设计和开发出更人性化更方便的手机多媒体客户端,就需要挖掘更深的用户需求,才不致让开发大的软件湮没在市场软件的大流之中。
无论是在国内还是国外,Android娱乐多媒体软件可以说是火爆发展中。
随着Android手机操作系统的快速发展和日益流行,Android娱乐多媒体软件的市场需求量也越来越大。
本文介绍了一款智能手机在线的娱乐多媒体客户端,针对市场上Android手机多媒体客户端的不足(必须将视频音乐下载到本地才可以播放),实现了通过wifi无线享受多媒体。
利用谷歌开源的力量,通过Android的相关知识,完成系统设计,给出开发的方案。
在市面上纷繁众多的Android手机软件中颇具特色,相信人性化的设计能够为广大的Android手机用户提供了更为周到和便捷的服务。
本文的主要结构如下:
1引言,介绍了智能手机的相关知识,现状和本文的大体介绍;2需求分析和可行性分析,分析了该客户端实现的可行性;3总体设计,总体介绍了客户端的设计过程;4详细设计,详细的介绍了客户端的设计;5客户端功能实现,通过开发工具实现客户端功能。
2需求分析和可行性分析
2.1需求分析
该客户端是通过用户开启客户端软件,从服务器上获取最新的信息,然后在本地显示,通过用户的操作进行反馈,比如播放音乐,观看视频,了解资讯,并且将反馈提交到服务器,服务器接受并响应。
从以上叙述来看,该客户端包括以下几个方面的功能:
1.使用环境检测
因为该客户端是在线的多媒体客户端,所以手机处于网络状态是必须的。
而因为客户端实现了音乐,视频,资讯的播放功能,对网络要求比较严格,鉴于国内的网络流量价格昂贵,所以客户端设定只有在wifi环境下才可以使用。
如果环境达不到要求,会提示使用者。
当手机连上了wifi时,客户端可以开启,此时会检测服务端是否已经开启。
因为不是商业项目,服务端是搭建在自己的电脑上的,所以很可能忘记启动,或者不稳定,所以服务端的检测是很有必要的。
如果检测服务端未启动,或者出现问题,会提示使用者稍后尝试,如果检测没有问题,则客户端会开始执行相应的操作。
2.欢迎界面
在当前人们的生活中,人机交互越发重要,一款再好的应用,没有友好的界面是无论如何得不到用户的青睐。
在用户打开客户端时,需要连接服务器,初始化客户端,是一个比较耗时的操作,如果什么都不做让用户等待,可能会让用户对这款应用不在感兴趣。
所以需要一个欢迎界面。
具体功能如下:
用动画的形式显示欢迎界面,告诉用户客户端正在更新数据,并没有失去响应。
同时介绍客户端的特点,让用户不会等的很着急。
3.首页精彩推荐
首页精彩推荐主要是为用户展现服务端生成的精彩推荐内容,并且响应用户操作。
具体功能如下:
从服务器下载推荐内容:
在用户打开客户端时,连接服务器,下载推荐内容。
显示推荐内容:
处理服务器返回的内容,通过解析数据,以友好的方式展示在客户端。
响应用户操作:
通过用户操作,客户端响应用户操作。
比如跳转到其他板块,如音乐板块,视频板块,新闻板块。
4.音乐模块
音乐模块主要是访问服务器,下载音乐列表,对用户选择的歌曲进行下载播放,并且响应用户操作。
具体功能如下:
访问服务器:
通过http请求访问服务器
下载音乐列表:
连接服务器后,下载最新的音乐列表。
音乐列表的显示:
解析服务器响应的数据,友好的展示在客户端,接受用户操作。
音乐播放:
播放用户选择的音乐,并且相应用户的暂停、调节音量等操作。
5.视频模块
视频模块主要是访问服务器,下载视频列表,对用户选择的视频进行播放,并且响应用户操作。
具体功能如下:
访问服务器:
通过http请求访问服务器
下载视频列表:
连接服务器后,下载最新的视频列表。
视频列表的显示:
解析服务器响应的数据,友好的展示在客户端,接受用户操作。
视频播放:
播放用户选择的视频,并且相应用户的暂停、调节音量等操作。
6.资讯模块
资讯模块主要是显示服务器上最新更新的资讯。
具体功能如下:
访问服务器:
通过http请求访问服务器
获取资讯列表:
连接服务器后,下载最新的资讯列表。
资讯展示:
解析服务器返回的数据,友好的展示在客户端,供用户阅读。
7.网络,文件处理模块
网络,文件处理模块主要是处理服务器的通讯,和网络文件的下载。
具体功能如下:
访问服务器:
通过http请求访问服务器
文件下载:
通过http协议,io操作下载相应的文件。
2.2可行性分析
可行性研究是预开发软件系统的总体目标,给出它的功能、性能、可靠性以及其他方面的要求。
其目的是用最小的代价在尽可能短的时间内确定问题是否能够解决、是否得去解决。
下面从三个方面分析本系统的可行性:
1.技术可行性
本客户端采用Android手机进行操作,用Eclipse和AndroidSDK进行前台界面设计、和后台数据管理,处理等功能。
Android程序的开发语言是可以是C或者Java,其中C多用于游戏的开发,Java多用于程序的开发,所以说Android的开发是建立在Java的基础上的,所以要想开发Android程序必须先学会Java开发。
所以在技术上Java的准备是必须的。
而java是开源的,所以java的技术难题都可以在网上得到解答,所以java的技术方面可行。
Android的开发首先必须要有AndroidSDK,从官网上下载并配置后,才可以结合JDK开始进行开发。
所以Android的技术准备是必须的。
而Android也是开源的,官方给出了系统的源码,有任何问题官方也会有专门的解答团队,网络上也有很多论坛博客有所研究,所以Android的技术方面也是可行的。
所以根据Java的特点与Eclipse强大的方便快捷的开发工具,以及他们当前的广泛实际应用,充分说明本客户端在技术方面可行。
2.经济可行性
经济可行性分析是从经济的角度分析客户端的规划方案有无实现的可能和开发的价值;分析客户端所带来的经济效益是否超过开发和维护所需要的费用。
经济上的可行性是基础。
该客户端的开发是作为研究学习之用,不存在商业模式的问题,而且涉及到的人员只有自己,不需要有开发人员的忧虑,而且Android作为当前热门智能手机操作系统,拥有Android的手机或者模拟器在经济上是完全可以承受的。
所以本设计在经济方面可行。
3.开发环境可行性
客户端开发需要的开发环境需要在装有window98系统以上的电脑运行,这样的配置在当今已经不能成为难题,目前的电脑安装JDK,Eclipse,AndroidSDK更加是再简单不过,只需要到官方网站下载安装即可,而且全部是免费的。
所以开发环境可行性没有任何问题。
4开发工具
1.EclipseJavaEE+JDK6
2.android-sdk在Eclipse上的插件
2.android-sdk-windows
3总体设计
在软件项目开发的需求分析阶段,已经搞清楚了软件要做什么的问题,对于一个实际的开发项目,需要把这些需求通过需求说明书文档描述出来,此即是目标系统的逻辑模型。
接下来的工作是要把软件做什么的逻辑模型转换为怎么做的物理模型,即着手去实现软件的需求,并将设计的结果反映在设计说明书文档中,此阶段即为设计阶段[1]。
3.1界面流程设计
本客户端实现了多媒体的下载与播放,通过手机上app图标进入客户端程序。
用户进入客户端后,先监测环境,显示欢迎界面,同时初始化推荐界面。
欢迎界面结束,显示推荐界面。
用户此时已经可以操作,用户可以选择跳转到音乐列表界面、视频列表界面、资讯列表界面,也可以选择推荐的内容,直接进入到音乐播放界面,视频播放界面,资讯阅读界面。
如果用户选择跳转到3个列表界面,则会在选择相应的内容后,跳转到对应的播放界面或者阅读界面。
界面流程图如图3.1所示。
图3.1界面流程图
3.2模块设计
为了方便整个客户端的控制,客户端分为了几个模块,分别如下:
环境检测模块,初始化客户端模块,推荐模块,音乐模块,视频模块和资讯模块。
图3.2模块跳转流程图
其中每个模块的设计如下:
1.环境检测模块
客户端的开启,从进入客户端到开启欢迎界面其中会经过网络环境监测,会给出相应的提示信息,如果一切检测全部通过则会进入到初始化客户端的过程中。
图3.3环境检测模块流程图
2.初始化客户端模块
初始化客户端是一系列的http请求和io操作,其中各个模块的跳转如下。
图3.4初始化客户端模块流程图
3.推荐模块
推荐模块主要是用来让客户快速了解服务端锁更新的内容,分别展示了音乐,视频,资讯的一部分信息。
而且生成了菜单,等待用户操作,可以跳转到对应的模块。
3.5推荐模块流程图
4.音乐、视频、资讯模块
这3个模块是将服务器上返回的所有信息展现在客户端,并且接受用户的操作并响应,打开对应的资源。
图3.6音乐、视频、资讯模块流程图
3.3数据结构设计
从服务器接收到的信息是以XML形式存在的,解析完成后如何在客户端显示是个很麻烦的事。
设计好的数据结构可以极大的优化客户端,快速的完成客户端的显示功能,提高用户体验。
所以设计好数据结构是一件非常重要的事。
1.MusicListViewHolder(音乐列表属性类)
音乐列表的属性是歌曲,每首歌的属性有很多,歌曲ID,歌曲名称,歌曲地址,演唱者,专辑名称,歌曲长度,歌曲文件大小,点击次数,更新时间,地区等,如果音乐列表将所有属性都添加进来无疑会是一件糟糕的决定,所以只要将最重要的,需要在客户端显示的属性读出来的可以了,所以MusicListViewHolder的说明如下:
表3.1MusicListViewHolder表
名称
类型
说明
SongAlbum
ImageView
专辑图片,会在界面显示
SongName
TextView
歌曲名称,会在界面显示
SongArtist
TextView
歌手民称,会在界面显示
2.MusicBean(音乐实体类)
MusicBean是音乐的实体类,它必须包含音乐的所有属性,这样测可以记录所有信息,从而让客户端得到想要的数据。
表3.2MusicBean表
名称
类型
说明
m_name
String
歌曲名称
m_address
String
歌曲文件地址
m_artist
String
歌手信息
m_album
String
专辑信息
m_imageaddress
String
歌曲专辑图片地址
3.VdeoListViewHolder(视频列表属性类)
视频列表的属性是视频,每段视频的属性有视频截图,视频名称,这些需要在客户端显示。
所以VideoListViewHolder的说明如下:
表3.3VideoListViewHolder表
名称
类型
说明
VideoImage
ImageView
视频截图,会在界面显示
VideoName
TextView
视频名称,会在界面显示
4.VideoBean(视频实体类)
VideoBean是视频的实体类,它必须包含视频的所有属性,这样测可以记录所有信息,从而让客户端得到想要的数据。
表3.4VideoBean表
名称
类型
说明
v_name
String
视频名称
v_address
String
视频文件地址
v_imageaddress
String
视频图片地址
v_time
String
视频添加时间
5.NewsListViewHolder(资讯列表属性类)
资讯列表的属性是新闻,每条资讯的属性有资讯标题,资讯简介,这些需要在客户端显示。
所以NewsListViewHolder的说明如下:
表3.5NewsListViewHolder表
名称
类型
说明
NewsName
TextView
资讯标题,会在界面显示
NewsIntro
TextView
资讯简介,会在界面显示
6.NewsBean(资讯实体类)
NewsBean是资讯的实体类,它必须包含资讯的所有属性,这样测可以记录所有信息,从而让客户端得到想要的数据。
表3.6NewsBean表
名称
类型
说明
n_name
String
资讯标题
n_intro
String
资讯简介
n_detail
String
资讯详细内容
n_time
String
资讯时间
n_origin
String
资讯源
4.详细设计
4.1界面设计
在Android的开发中,界面的设计是与逻辑控制代码分离的,界面的设计是通过设计对应的xml文件来完成的,所有的控件都要在xml中先定义,然后再在逻辑代码中赋值或者修改。
在Android程序中将xml布局和javaactivity分开定义的另一个好处是,可以方便的根据屏幕方向、设备类型(手机或是平板电脑)、语言环境(英文或是中文)做出不同的响应。
这些自定义项可以被抽象出来放置在不同的xml资源文件中,而不用去更改底层的activity[2]。
1.提示界面设计
因为提示界面的布局非常简单,所以没有在单独为其配置一个xml布局文件,而是专门设计了一个MyDialog类来实现,MyDialog只有一个变量,一个Activitycontext,用来接受参数,用于生成布局。
但是对构造方法做了重载,从而可以接受不同的参数,生成不同的提示界面。
MyDialog的不变参数有finalActivitycontext,Stringtitle,Stringmessage,其中context表明是由哪个Activity来生成提示对话框的,title用来作为提示对话框的标题,message用于提示信息;MyDialog的可变参数为Stringbutton1,Stringbutton2,如果只有一个Button则表明该提示对话框只有一个按钮,按钮上的文字为button1,如果有两个Button,则表明提示对话框有2个按钮,对应的文字分别为button1,button2。
MyDialog通过构造方法得到参数,然后通过AlertDialog.Builderbuilder=newBuilder(context)方法来生成一个弹出对话框实例,然后调用builder.setMessage(message)来设置提示对话框的提示文字;,调用builder.setTitle(title)来设置提示对话框的标题,如果只有一个button1,则调用builder.setPositiveButton(button1,newOnClickListener())方法来在对话框上生成一个按钮,文字为button1,并且为按钮添加一个监听器,用来响应用户的点击操作。
如果还有button2,则会调用builder.setNegativeButton(button2,newOnClickListener())方法来生成第二个按钮,文字为button2,并且也添加一个监听器,用于相应用户的点击操作。
最后调用builder.create().show()方法来最终生成一个提示对话框,并且将对话框显示出来。
最终的提示对话框大体上如下图所示。
图4.1提示界面设计
2.欢迎界面设计
欢迎界面主要是让客户端在后台访问网络,加载所需要的资源。
可能会是一个时间较长的操作,所以可能会让用户感到无聊,所以选择动画的形式来表现客户端正在运行。
首先在欢迎界面的welcome_layout.xml文件中配置总的布局为LinearLayout。
LinearLayout视图将他的子View对象排列在一行或一列中,这取决于它的方向属性设置为水平还是垂直。
对于创建表单而言,这是一种非常方便实用的布局方法[3]。
方向设置为android:
orientation=”vertical”,然后设置背景图片为android:
background="@drawable/welcome",表明背景为该app中drawable文件夹下名为welcome的图片文件。
然后设置用来作为动画的图片文件。
欢迎界面的动画是通过代码在后台不停的更换界面上的图片来实现的,实现了最简单的动画。
3.推荐界面设计
推荐页面主要是将此次客户端访问服务器的的结果首项生成一个界面,方便用户直接了解到最新的内容。
该界面主要是由3个部分组成,最上面为标题,表示这是推荐页面,中间为推荐内容,因为设计相当复杂所以另外用一个xml文件来配置,这里用一个标签来说明,最下面是4张图片,但是设置为可以点击,用于作为菜单栏。
通过监听用户的点击可以跳转到对应的界面。
其中标签所指向的xml文件详细的配置了推荐内容的布局,主要分为3块。
最终设计图如下:
图4.2推荐界面设计
4.音乐,视频,资讯列表界面设计
这三个列表是将服务端查询结果生成可视化界面,让用户以有好的方式了解到最新的信息有哪些。
这三个界面的设计相似,都是最上面为标题,下面是具体的内容,其中为了美观将视频列表设置为双行显示。
5.音乐播放界面设计
如今人们的要求越来越高,对客户端的界面要求也很苛刻,所以音乐播放界面必须做到信息明确但又不失美感。
所以音乐播放界面显示的是当前播放音乐的一些信息,包括歌曲名称,歌手名称,专辑名称。
为了画面美观,同时显示了专辑图片。
为了让用户方便直观了解歌曲的播放情况,使用了进度条,可以让用户了解目前已经缓冲了多少,已经播放了多少,同时用数字的形式显示出来。
6.视频播放界面设计
因为视频的分辨率问题,所以客户端将视频播放界面设置为横向的,可以让用户拥有更好的视角。
7.资讯阅读界面设计
咨询阅读界面简洁明了,分为3各部分,资讯标题,资讯附加信息和资讯详细信息,方便用户直接了解资讯内容。
4.2模块类设计
由于Android系统的特点,界面和逻辑处理是分开的,但是处理好控件调用,就可以在逻辑代码中对界面做出响应的更改,实现动态界面效果。
业务逻辑直接在相应的Activity中实现。
Activity是最基本的模块,称之为“活动”。
在应用程序中,一个Activity通常就是一个单独的屏幕。
每一个活动都被时限为一个独立的的类,并且从活动基类继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出相应[4]。
每一个Activity对应一个显示界面,所以客户端中至少有8个Activity。
分别对应为:
ClientActivity.java:
欢迎模块的设计类,
MainActivity.java:
推荐模块的设计类,
MusicListActivity.java:
音乐列表设计类,
MusicPlayActivity.java:
音乐播放设计类,
NewsListActivity.java:
资讯列表设计类,
NewsPlayActivity.java:
资讯阅读设计类,
VideoListActivity.java:
视频列表设计类,
VideoPlayActivity.java:
视频播放设计类。
1.ClientActivity设计
欢迎模块的设计是最基础也是最必不可少的。
因为它包含了环境监测模块,客户端初始化模块,用以保证客户端的运行正常,与服务器的连接可靠。
该模块首先请求Android的权限来访问手机的网络状态。
如果手机没有开启wifi则会弹出对话框,提醒用户先开启wifi再尝试进入客户端。
如果手机wifi已经开启,则客户端会先发送一个http请求,访问服务器。
根据服务器的返回值来判定服务器是否已经启动。
如果服务器返回值不为“200”,则说明服务器未正常开启或者服务器连接有问题,会提示用户稍后再次尝试进入客户端。
如果服务器返回值为“200”,则说明服务器已经开启,并且连接正常,可以进行客户端的初始化了。
客户端的初始化包括了http请求,下载服务端的返回的xml文件,解析xml文件得到服务器上资源的真确地址和信息,然后全部放入到缓存中,然后下载图片,供整个客户端调用。
http请求为3个,分别访问的是服务器struts2框架的3个action,用于返回对应的xml,xml中分别存放着服务器上的音乐,视频,资讯的信息。
下载xml则是调用Utils辅助类,实现文件的IO操作,将服务器返回的xml放到本地的sd卡中,然后便于客户端的解析。
解析xml是利用java自带的dom解析工具,特点是对于小的xml文件解析速度非常快,刚好适合服务端返回的xml。
将解析得到的所有资源信息存放到一个个实体类中(MusicBean,VideoBean,NewsBean),在将实体类放入到容器中(对应的ArrayList),最后将容器存放到缓存类中(ResourcceMap)。
下载图片则是读取缓存,得到图片在服务器上的地址,然后开启新的线程调用Utils类下载图片文件,这里做的优化是先判断图片文件在本地是否存在,因为可能不是第一次进入客户端,之前已经将图片下载过了,或者服务器最近只更新了少量的图片,所以不需要将所有图片都下载下来,当判断文件是否存在结果为true时,略过文件的下载,当结果为false时再开启新的线程下载。
可以有效的加快客户端的反应速度,提高用户的操作体验。
当所有东西准备好后,就可以进入推荐页面了。
2.MainActivity设计
推荐模块的设计是为了让用户最快速,最直观的了解服务器上最新更新的信息,因为服务器返回的信息量非常大,用户可能不会有精力去从所有的信息中挑选出自己感兴趣的信息,所以推荐模块就是从音乐,视频,资讯中分别选取最新的内容,在推荐页面展示出来,让用户直接知道部分最新的信息。
推荐模块的工作顺序是先访问缓存,将需要的信息提取出来,然后调用界面生成器生成界面,最后等待用户的操作。
但是用户可能会只对音乐感兴趣,所以推荐页面在屏幕的最下方实现了菜单,让用户选择自己感兴趣的类别然后展现对应的信息。
菜单选项为音乐,视频,资讯,用户选择对应的菜单后,会进入到对应的模块。
推荐页面显示的内容都是可以点击的,如果用户对推荐的音乐很有兴趣,在点击对应的区域后,则会直接进入到音乐播放界面,播放所推荐的音乐。
同样适用于推荐的视频,资讯。
3.MusicListActivity设计
音乐列表模块是将服务器返回的所有音乐信息显