基于Android的视频播放器的设计与实现.docx

上传人:b****3 文档编号:26514314 上传时间:2023-06-20 格式:DOCX 页数:42 大小:1.67MB
下载 相关 举报
基于Android的视频播放器的设计与实现.docx_第1页
第1页 / 共42页
基于Android的视频播放器的设计与实现.docx_第2页
第2页 / 共42页
基于Android的视频播放器的设计与实现.docx_第3页
第3页 / 共42页
基于Android的视频播放器的设计与实现.docx_第4页
第4页 / 共42页
基于Android的视频播放器的设计与实现.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

基于Android的视频播放器的设计与实现.docx

《基于Android的视频播放器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android的视频播放器的设计与实现.docx(42页珍藏版)》请在冰豆网上搜索。

基于Android的视频播放器的设计与实现.docx

基于Android的视频播放器的设计与实现

基于Android的视频播放器的设计与实现

 

基于Android的视频播放器的设计与实现

中文摘要

如今,随着基于Android操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。

因此,设计一个基于android手机的多功能播放器,具有重要的实际意义。

本次毕业设计主要使用JDK+Eclipse+Android-SDK-Windows工具进行开发,使用的编程语言是Java语言。

该程序主要由4个不同Activity来实现,每个Activity实现相应的功能模块,能够有效满足Android手机用户在视频播放中的常见需求。

本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。

对程序主要的Activity都进行了详细的介绍和分析,包括对其使用的布局文件的具体介绍,以及各个控件的作用。

在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了大量截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。

所开发的程序界面比较友好,操作相对容易,达到设计要求。

关键词:

安卓;视频播放;Activity;Mediaplayer

TheDesignandImplementationofVideoPlayerBasedonAndroid

ABSTRACT

Now,withthewideapplicationofsmartphonebasedontheAndroidoperatingsystem,videoplayerhasbecometheessentialapplicationofsmartphone.Mostofconsumersurgentlyrequireapersonalizedvideoplayerwhichisclosetouserandfacilitateuser.Therefore,thedesignofamultifunctionalplayerbasedonandroidmobilephoneshasanimportantpracticalsignificance.

TheprojectdesignisdevelopedbyusingJDK,Eclipse,andAndroid-SDK-Windowstools.TheprogramminglanguageisJava.TheprogramconsistsoffourdifferentActivitiesandeachActivityachievesthecorrespondingfunctionalmoduleswhichcaneffectivelysatisfythecommonrequirementsforplayingvideoonAndroidmobilephones.

Thispaperintroducedthedesignideas,designscheme,systemarchitectureandprojectengineeringstructuresofvideoplayer.Thefeasibilityandrequirementsofsystemwereanalyzedindetail.Thesystemfunctionandeachmodulewereexplained.ThemainActivityoftheprogramaredescribedandanalyzedindetailincludingtheusinglayoutfile,aswellastheroleofeachcontrol.Finally,Imadethetestfortheprogramincludingthefunctionsofeachimplementedmodules.Inordertoobservewhethertheprogramshouldfunctionproperlyandfindtheproblemsthatmayexistintheprogram,manyscreenshotsweresavedtodemonstratethetestresults.Thedevelopedprogramhasafriendlyinterfaceandcanbeoperatedrelativelyeasy,whichhasachievedthedesignrequirement.

KEYWORDS:

Android;VideoPlay;Activity;Mediaplayer

第一章绪论

1.1课题的来源及意义

在这个信息化的时代,IT业已经成为世界发展的主流,我们对信息技术的依赖远远超过了对我们自己的依赖,计算机和手机已经成为我们日常生活中不可缺少的获得信息的渠道。

正因为如此,各种各样的软件层出不穷,我们的生活也因为各种各样的软件变的更有滋有味。

不缺乏娱乐性,也不缺乏教育意义,让我们从这些软件中受益匪浅,使我们看到了相比以前的巨大进步。

同时,随着科技的发展,计算机越来越精致,手机也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。

手机也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。

一个好的软件,能够标志一个手机品牌的地位。

所以,开发一款好的手机软件是相当必要的。

以前我们看电影,看视频,都要去电影院或者是影吧,而且时间有限,很不方便;而现在是在电脑上或者手机上看视频,看小说,文档等等。

以此看来,一个好的手机视频播放器软件的开发是相当有必要的。

作为集通讯与娱乐消费为一体的智能手机,播放器是其中一个必不可少的重要功能,一个贴近用户,方便用户的多功能的播放器也是用户所渴望的,更是开发人员应当致力于的。

随着Google推出的Android手机的不断更新换代,技术方面也日趋成熟,一个良好的视频播放器的设计与实现已经成为可能。

目前,作为Android的手机用户而言,都有视频播放器的实体应用。

但是,对于绝大多少而言,其界面单调,功能单一。

比如,界面与其他非智能的手机没有大的区别,而功能上面,也就除了基本的播放控制流程之外,多上一个视频基本信息的显示,同时加上一个对预设定路径的播放列表的展示。

因此,开发一款界面友好、炫丽、功能更多的视频播放器,更好的贴近用户,满足用户需求,其应用前景也是相当乐观的。

1.2Android发展现状及前景

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。

Android操作系统最初由AndyRubin开发,主要支持手机。

2005年8月由Google收购注资。

2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。

随后Google以Apache开源许可证的授权方式,发布了Android的源代码。

第一部Android智能手机发布于2008年10月。

Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。

由此可见,Android占有非常可观的市场前景。

具有开源特性的Android平台打破了之前Symbian、Windowsmobile等操作系统收取高额授权费用的模式,使得智能手机成本大大的降低。

而正是由于它开放源代码,使得手机产生更多个性化的应用。

同时,合作方能够在这里得到利润或者创造价值,手机软件行业得到维护协调发展。

以Google、苹果和诺基亚为中心各自形成的生态链将以原来数倍的速度推动移动互联网的发展,这正是Google发布Android平台的意义,也是Android平台存在的使命所在。

作为Android平台成员之一的中国移动也投资成立了一家通讯公司,专门从事Google手机软件的应用以及本地化的软件的开发,比如将在Google手机平台上添加飞信、输入法等一系列符合国内用户使用特色的功能。

国内众多企业也将眼光投入到Android上面,并启动了相关的计划来深入的理解并发展Android。

更多的手机软件开发企业已经或者筹备着将公司进行转型,从其他方向的开发转向到Android的开发。

由此可见,无论是在国内还是在国外,Android平台对手机软件行业和移动手机平台将发挥极大地推动作用,而在未来的几年时间里,Android将越发的凸显自己的重要性[1]。

目前国内的Android开发还是主要以应用开发为主,主要分成3类:

为企业开发应用、开发通用应用(放到AndroidMarket或者其他AppMarket销售)以及游戏开发(放到AndroidMarket或者其他AppMarket销售)。

第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。

除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。

第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种:

为国外公司进行外包开发,或者通过Google的移动广告(AdMob)通过广告点击分成。

而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。

第三类开发者,目前和第二类开发者类似[3]。

1.3项目的主要工作和解决的问题

本课题的研究目的就是要通过对基于Android的多功能视频播放的系统设计与实现,探讨该系统的实现过程,以有效满足Android手机用户在视频播放中常见的需求。

本课题的主要内容为:

(1)根据对Android手机视频播放器功能的了解和分析,从功能和实用的角度出发,设计并实现Android视频播放器;

(2)对Android视频播放器进行模块划分;

(3)对各模块分析并设计、实现;

(4)从功能多样性角度考虑,尽可能添加一些附加的设计方案并实现。

1.4系统设计的目标及基本思路

本次毕业设计使用Eclipse+ADT插件+DDMS插件搭建的Android开发平台环境,开发语言为Java语言。

需要开发出基于Android平台的视频播放器应用程序,并能够在Android手机上运行。

基本思路介绍如下:

第一步:

程序运行时进入主Activity,通过更新或查看文件列表,选择一个视频文件;

第二步:

读入视频文件,调用Mediaplayer.setDataSource()方法设置文件路径,并通过Mediaplayer.prepare()方法将Mediaplayer对象置为准备状态;

第三步:

调用Mediaplayer.start()方法播放视频,此时可以调节音量、进度,暂停播放,重置播放等等操作;

第四步:

播放完成后,Mediaplayer对象进入了PlaybackCompleted状态,此时可以选择其他视频文件进入下一个视频的播放或者退出程序。

1.5论文组织结构

本文主要由:

中英文摘要、目录、绪论、课题相关技术介绍、系统可行性分析、系统需求分析、程序实现、测试、结束语、参考文献、致谢语以及附录构成。

第一章绪论主要分析和介绍背景、课题主要研究的问题以及系统设计的目标及基本思路。

第二章主要介绍课题的相关技术。

第三章是系统分析以及系统功能的设计与实现,其中包括系统可行性分析和系统需求分析。

第四章是程序测试和结果的分析与研究等。

最后对全文进行了总结和展望,附录部分为主要功能的函数源代码。

第二章Android视频播放器相关技术介绍

2.1Android介绍

Android是“机器人”的意思,是Google公司于2007年11月5日发布的一个机遇Linux平台的开源手机操作系统。

该系统由底向上一共分为了4层,如图2-1。

每一层对把底层实现封装,并提供调用接口给上一层。

图2-1Android系统架构

(1)Linux内核(LinuxKernel)。

Android运行在LinuxKernel2.6之上,但是把Linux内核GNU协议约束的部分做了取代。

这样,运行在Android上的程序可以用于商业目的。

Linux内核是硬件和软件层之间的抽象层。

(2)中间件。

中间件包括两部分:

核心库和运行时环境(Libraries&AndroidRuntime)。

核心库包括,SurfaceManager,显示系统管理库,负责把2D或3D内容显示到屏幕;MediaFramework,媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQLite,数据库,一个功能十分强大的轻量级嵌入式关系数据库;WebKit浏览器引擎等。

运行时环境主要包括一个DalvikVirtualMachin,Dalvik虚拟机,区别于Java虚拟机的是,每一个Android应用程序都在自己的进程中运行,都有一个属于自己的Dalvik虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。

Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。

(3)应用程序框架。

丰富而又可扩展性的视图(View),可以用来构建应用程序,它包括列表(List),网格(Grids),文本框(Textboxs),按钮(Button),可嵌入的Web浏览器等。

内容提供者(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享他们各自的数据。

资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(LayoutFiles)。

通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自己定义的提示信息。

活动管理器(ActivityManager)用来管理应用程序的生命周期,并提供常用的导航回退功能。

(4)应用程序。

Android系统会内置一些应用程序包,包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理器等等。

Android应用程序由强大的Java语言来编写,也支持其他一些语言如C、Perl等。

其中Java应用最为广泛,其他语言已经就看不到了[4]。

2.2Android开发平台及相关技术

2.2.1Android-Windows开发环境

(1)JDK1.6.0_16:

JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。

JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。

SE(J2SE),standardedition,标准版,是我们通常用的一个版本,从JDK5.0开始,改名为JavaSE。

EE(J2EE),enterpriseedition,企业版,使用这种JDK开发J2EE应用程序,从JDK5.0开始,改名为JavaEE。

ME(J2ME),microedition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK5.0开始,改名为JavaME。

没有JDK的话,无法编译Java程序[10]。

(2)Eclipse-SDK-3.6.2-win32:

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)[10]。

(3)Android-SDK:

SDK(softwaredevelopmentkit)称为软件开发工具包。

被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

因此,AndroidSDK指的是Android专属的软件开发工具包。

(4)ADT_16:

AndroidDevelopmentTools--安卓开发工具。

目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具[2]。

(5)AVD:

AVD的全称为:

AndroidVirtualDevice,就是Android运行的虚拟设备,他是Android的模拟器识别。

建立的Android要运行,必须创建AVD,每个AVD上可以配置很多的运行项目。

创建AVD的方法有两种。

一是通过eclipse开发环境,二是通过命令行创建[5]。

2.2.2Mediaplayer视频技术

在Android系统中,最简单、最常用的视频技术是Mediaplayer接口,通过此接口可以播放指定的音频和视频文件,另外也可以通过VideoView来播放视频,虽然VideoView比Mediaplayer简单易用,但定制性不如Mediaplayer,要视情况选择。

Mediaplayer播放音频比较简单,但是要播放视频就需要SurfaceView。

SurfaceView比普通的自定义View在绘图上更有优势,它支持完全的OpenGLES库。

Mediaplayer能被用来控制音频/视频文件或流媒体的回放,可以在VideoView里找到关于如何使用这个类中的方法的例子。

使用Mediaplayer时限音频和视频播放的基本步骤,首先生成Mediaplayer对象,根据播放文件从不同的地方使用不同的生成方式;得到Mediaplayer对象后,根据实际需要调用不同的方法,如start()、stop()、pause()、release()等。

需要注意的是,在不需要播放的时候要及时释放掉与Mediaplayer对象相连接的播放文件[7]。

图2-2显示了一个Mediaplayer对象被支持的播放控制操作驱动的生命周期和状态。

椭圆标识代表Mediaplayer对象可能主流的状态。

由一个箭头开始的弧线代表同步的方法调用,而以双箭头开头的弧线代表异步调用方法。

通过图2-2可以知道一个Mediaplayer对象有如下状态。

当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态。

当调用了release()方法后,它就处于End状态。

这两种状态之间的时间是MediaPlayer对象的生命周期。

在一个新构建的MediaPlayer对象和一个调用了reset()方法的MediaPlayer对象之间有个微笑但十分重要的差别。

在Idle状态时,调用getCurrentPosition()、getDuration()、getVideoHeight()、getVideoWidth()、setAudioStreamType(int)、setLooping(boolean)、setVolume(float,float)、pause()、start()、stop()、seekTo(int)、prepare()或者是prepareAsync()方法都是编程错误。

当一个MediaPlayer对象处于刚被创建的时候,内部的播放引擎和对象的状态都没有改变,在这个时候调用以上方法,框架将无法回调客户端程序注册的OnErrorListener.onError()方法;但若这个MediaPlayer对象调用了reset()方法之后,再调用以上方法,内部的播放引擎就会回调客户端注册的OnErrorListener.onError()方法,并将错误的状态传入。

图2-2Mediaplayer对象状态

所以,一旦一个MediaPlayer对象不再被使用,应立即调用release()方法来释放咋内部的播放引擎中与这个MediaPlayer对象关联的资源。

资源可能包括如硬件加速组件的单态组件,若没有调用release()方法可能会导致之后dMediaPlayer对象实例无法使用这个单态硬件资源,从而运行失败。

一旦MediaPlayer对象进入了End状态,它不能再被使用,也没有办法迁移到其他状态[8]。

此外,使用new创建的MediaPlayer对象处于Idle状态,而那些通过重载的create()便利方法创建的MediaPlayer对象却不是处于Idle状态。

事实上,如果成功调用了重载的create()方法,那么这些对象已经是处于Prepare状态了。

在一般情况下,由于种种原因,一些播放控制操作可能会失败,如不支持视频格式,缺少隔行扫描,分辨率过高,流超时等等。

因此,错误报告和回复在这种情况下是非常重要的。

有时,由于编程的错误,在处于无效状态的情况下调用了一个播放控制操作可能发生。

在所有可能的错误条件下,内部的播放器引擎会自动的调用一个由程序自身所提供的OnErrorListener.onError()方法。

程序可以通过调用Mediaplayer.setOnErrorListener()方法来注册OnErrorListener。

如一旦发生错误,MediaPlayer对象会进入到Error状态。

为了重用一个处于Error状态的MediaPlayer对象,可以调用reset()方法把这个对象恢复成Idle状态。

注册一个OnErrorListener获知内部播放心情发生的错误时良好的编程习惯。

在不合法的状态下调用一些方法,如prepare()、prepareAsync()和setDataSource()方法等会抛出IllegalStateException异常。

调用setDataSource(FileDescription)方法、setDataSource(String)方法、或者是setDataSource(Uri)方法、setDataSource(FileDescriptor,long,long)方法,便可以使MediaPlayer对象从Idle状态迁移到Initialized状态。

若此时MediaPlayer对象处于其他状态下,调用setDataSource()方法会抛出IllegalStateException异常。

在开始播放前,MediaPlayer对象必须进入Prepared状态。

在此有两种方法(同步和异步)可以实现。

调用Prepare()方法(同步),此方法返回表示MediaPlayer对象已经进入Prepared状态。

调用prepareAsync()方法(异步),此方法返回表示MediaPlayer对象进入Preparing状态并返回,而内部的播放引擎继续未完成的准备工作。

在开始播放时,必须调用start()方法。

当方法返回成功时,MediaPlayer对象应当处于Started状态。

isPlaying()方法可以被调用来测试某个MediaPlayer对象是否处于Started状态。

播放可以被暂停、停止,以及调整当前的播放位置。

Pause()方法可以是MediaPlayer对象进入Paused

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1