基于android平台的视频播放器设计论文.docx

上传人:聆听****声音 文档编号:8982554 上传时间:2023-05-16 格式:DOCX 页数:54 大小:3.29MB
下载 相关 举报
基于android平台的视频播放器设计论文.docx_第1页
第1页 / 共54页
基于android平台的视频播放器设计论文.docx_第2页
第2页 / 共54页
基于android平台的视频播放器设计论文.docx_第3页
第3页 / 共54页
基于android平台的视频播放器设计论文.docx_第4页
第4页 / 共54页
基于android平台的视频播放器设计论文.docx_第5页
第5页 / 共54页
基于android平台的视频播放器设计论文.docx_第6页
第6页 / 共54页
基于android平台的视频播放器设计论文.docx_第7页
第7页 / 共54页
基于android平台的视频播放器设计论文.docx_第8页
第8页 / 共54页
基于android平台的视频播放器设计论文.docx_第9页
第9页 / 共54页
基于android平台的视频播放器设计论文.docx_第10页
第10页 / 共54页
基于android平台的视频播放器设计论文.docx_第11页
第11页 / 共54页
基于android平台的视频播放器设计论文.docx_第12页
第12页 / 共54页
基于android平台的视频播放器设计论文.docx_第13页
第13页 / 共54页
基于android平台的视频播放器设计论文.docx_第14页
第14页 / 共54页
基于android平台的视频播放器设计论文.docx_第15页
第15页 / 共54页
基于android平台的视频播放器设计论文.docx_第16页
第16页 / 共54页
基于android平台的视频播放器设计论文.docx_第17页
第17页 / 共54页
基于android平台的视频播放器设计论文.docx_第18页
第18页 / 共54页
基于android平台的视频播放器设计论文.docx_第19页
第19页 / 共54页
基于android平台的视频播放器设计论文.docx_第20页
第20页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于android平台的视频播放器设计论文.docx

《基于android平台的视频播放器设计论文.docx》由会员分享,可在线阅读,更多相关《基于android平台的视频播放器设计论文.docx(54页珍藏版)》请在冰点文库上搜索。

基于android平台的视频播放器设计论文.docx

四川理工学院本科毕业设计(或论文)

四川理工学院毕业设计

基于android平台的视频播放器设计

学生:

徐东

学号:

12021040122

专业:

电气工程及其自动化

班级:

2012.卓越

指导教师:

曾晓辉、刘兴忠

四川理工学院自动化与电子信息学院

二O一六年六

四川理工学院本科毕业设计(或论文)

摘要:

随着计算机科学和移动终端的不断发展,Android移动在终端已经成为了当今的主流,功能完善和性能优越的移动设备是用户优先选择的。

因此开发出功能强大且界面美观的手机应用具有广阔的市场前景。

本视频播放器是基于Android平台研究开发,具有完善美观的用户界面,除了基本的播放视频外,还能查看视频信息,视频的进度条的拖拽,手势调节屏幕亮度和声音大小。

本文设计的播放器采用Vitamio的视频解码器框架,可以播放多种常见的本地视频格式,界面简洁美观。

关键词:

Android,Vitamio,视频,播放器

-9-

Abstract:

Withthecontinuousdevelopmentofcomputerscienceandmobileterminals,Androidmobileterminalhasbecomethemainstreamoftoday'smainstream,functionalimprovementandsuperiorperformanceofmobiledevicesistheuserpreferred.Soithasabroadmarketprospecttodevelopthemobilephonewithpowerfulfunctionandbeautifulinterface.

ThevideoplayerisbasedonAndroidplatformresearchanddevelopment,withaperfectandbeautifuluserinterface,inadditiontothebasicplayvideo,butalsotoseethevideoinformation,theprogressofthevideoofthedrag,gesturecontrolscreenbrightnessandloudnessofthesounds.

Inthispaper,thedesignoftheplayerusingVitamiovideodecoderframework,youcanplayavarietyofcommonvideoformat,theinterfaceissimpleandbeautiful.

Keywords:

Android,Vitamio,Video,player

-II-

徐东:

基于android平台的视频播放器

目录

摘要 I

Abstract II

第1章前言 1

1.1设计的目的及意义 1

1.2国内外发展现状 1

1.3视频播放器概述 2

第2章Android开发技术介绍 4

2.1Android的架构介绍 4

2.2Android平台上开发技术介绍 6

2.2.1Android四大组件 6

2.2.2组件之间的调用 10

2.2.3Android进程和线程 11

2.2.4Android界面构造 13

2.2.5开发工具 Eclipse 16

第3章视频播放器需求分析 17

3.1视频播放器概述 17

3.2软件功能 17

3.2.1视频播放器界面 17

3.2.2性能要求 19

3.3视频播放流程图 19

第4章视频播放器的实现 21

4.1启动界面 21

4.2列表界面 22

4.3播放界面模块 25

4.3.1视频的播放 25

4.3.2控制菜单 26

4.4对话框界面 29

4.5其他界面模块 29

4.5.1菜单自动隐藏模块 30

4.5.2Toast界面模块 30

4.6退出界面 30

4.7本章小结 31

第5章视频播放器的测试 32

5.1解码能力 32

5.2功能性测试 33

5.3播放器的主观效果 33

5.4本章小结 33

第6章结束语 35

6.1总结 35

6.2问题和展望 35

致谢 37

参考文献 38

附录 39

IV

徐东:

基于Android平台的视频播放器设计

第1章前言

1.1设计的目的及意义

随着当今科学技术的发展,各种各样的应用被安装到移动电话上,比如视频电话,VOD视频,移动上网冲浪,在线阅读和资料共享等。

为了实现这些应用,移动电话的功能变得更聪明且智能,这也表明了移动互联网到了新时代。

新时代的到来,需要一个强大的开发平台来支持,因此,智能手机操作系统技术和研究已成为最活跃的领域之一。

由于如今的Android具有开放性,现在的Android系统已经应用于手机和平板电脑上,许多的商家已经将Android移植到高清播放机和智能电视设备上,通过这样的方式消费者会有更多的机会使用以电视作为屏幕的Android系统,这样就把视频播放器显得更为重要了。

本课题研究设计了一个基于Android系统的视频播放器,以APK的形式安装在Android手机和平板中,本应用从系统的数据库读取视频信息,显示视频列表,有相应的播放界面,查看视频信息的功能,视频比例的切换,相应的控制菜单,实现视频的删除功能和上一集下一集,以及手势控制播放界面的亮度和声音大小,应用操作简单功能全面,并且可以播放几乎是有的视频格式,让用户有良好舒适的体验。

Android上面的视频播放器很多公司和个人都在开发,并且其中的一些播放器如Moboplayer、RockPlayer、RealPlayer、VPlayer等受到消费者的青睐,但是目前大多数播放器功能多样繁复,占用内存大,嵌入过多的广告使用户没有良好的用户体验,所以有必要开发出一款功能全面,操作简单,并且具有较强解码能力的视频播放器。

1.2国内外发展现状

Android是一种真正意义上的开放型的并且不依赖于设备的移动设备综合平台,他包括用户界面、操作系统、中间件和应用的主要部分。

伴随开放的架构和优秀的研发环境,使Android的手持设备得到充分利用,他能提供有吸引力的移动应用,并且没有任何以前的块移动的独家产业创新的障碍。

Android有丰富的图形系统,这使得它易于开发多媒体应用和网络浏览器的工具。

自Android问世以来,全球的开发者已经做出了超过100万个应用,国内外出现了许多相当不错的视频播放器。

MoboPlayer,是由济南四叶草信息技术有限公司开发的,MoboPlayer需要在Android1.6或更高的版本上运行,MoboPlayer可以兼容更多的视频格式,并且努力的实现了任何视频格式都可以直接放在手机上播放。

VPlayer,最初由个人制作,后来组建了自己的团队。

VPlayer是一款很较为流行的视频播放器,根据VPlayer的官方说明,其下载量已经超过了百万级,VPlayer的特点是支持多数格式的视频,启动后直接进入视频文件夹,就可是对视频进行播放,使用方便等。

RockPlayer,是由上海的ChangeTec.h公司开发,RockPlayer是一款比较高性能的视频播放器,能支持多数的视频格式,具有个性化的UI布局和设计,可以和其云端的服务相配合,用户之间可以分享视频。

RealPlayer,和PC上的RealPlayer是一样的,andriod上的RealPlayer也是由RealNetworks公司研究开发的,能同时播放音乐、视频、照片、但是解码能力不是很全面。

1.3视频播放器概述

本次设计是基于Java语言通过eclipse进行编写的嵌入式播放器开发,该播放器结构简单并且占用空间小,但功能齐全。

实现目标:

1.从手机数据库获取所有视频信息。

2.播放mkv,flv,MP4,RMVB等常见格式的视频。

3.实现删除视频文件的功能。

4.实现手势刷新功能。

5.实现播放界面全屏播放的功能。

6.播放/暂停,上一集,下一集,手势实现音量/亮度的调节。

正如我国资深嵌入式系统专家—沈绪榜院士的预言,“未来十年将会产生头大小、具有超过一亿次运算能力的嵌入式智能芯片”,将为我们提供无限的创造空间。

总之“嵌入式微控制器或者说单片机就好像是一个黑洞,会把当今很多技术和成果吸引进来。

中国应当注意发展智力密集型产业”。

嵌入式播放器的迅速发展,使影音播放对于用户更加的方便、适用和简单,具有非常广阔的市场发展前景,也是本次设计的根本。

第2章Android开发技术介绍

2.1Android的架构介绍

Android系统架构主要由5部分组成,分别是:

LinuxKernel,AndroidRuntime,Libraries、ApplicationFramework,Applications[12]。

如图2-1所展示的为Android总体架构图,其主要是对Android的总体架构和包含的模块做具体的介绍。

图2-1Android系统架构图

(1)应用层(applications)

Android应用层是由运行在Android设备上所有应用程序共同构成的(系统预装程序以及第三方应用程序)。

Applications主要是留给开发者去开发,Android只提供了一些基本的原生应用,比如日历、电子邮件客户端、联系人、浏览器、地图、音乐播放器、视频播放器、SMS程序和其他设置等,所有应用都是基于Java语言编写而成,但是也支持通过JNI的方式实现C语言编写[1]。

(2)框架层(ApplicationFramework)

Android是开放的开发平台,能使Android开发者编制出极其丰富美观的应用程序。

开发者可以灵活的利用设备硬件优势、运行后台服务、访问位置信息、向状态栏添加通知、设置闹钟等。

所有应用程序本质都是一组服务和系统,包含如下的组成部分。

视图(View)——提供丰富的、可扩展的视图集合,可以用于构建一个应用程序。

包括列表、文本框、按钮、网格,或者是内嵌的网页浏览器。

内容提供者(ContentProviders)——可使应用程序能够访问其他的应用程序(如:

电话簿)的数据,或者共享自己的数据。

通知管理器(NotificationManager)——可以使所有的应用程序能在状态栏显示自定义的提示或警告。

活动管理器(ActivityManager)——用于管理应用程序的生命周期,提供了通用的导航回退功能。

资源管理器(ResourceManager)——使应用能够访问非代码资源,比如本地图形、字符串和布局文件。

(3)Libraries

Android包含了一个C/C++集合库,便于Android系统的各组件使用,开发者通过Android的应用程序框架(applicationframeworks)调用这些功能Error!

Referencesourcenotfound.,下面列举其中的一些核心库:

SQLite——这是一个强大而轻量级的关系数据库引擎,所有的应用程序都可以引用。

FreeType——位图和矢量字体的渲染。

3D库——基于OpenGLES1.0APIs的实现,该库包含高度优化的3D软件光栅或使用3D硬件加速。

SGL——基本的2D图形引擎。

LibWebCore——新型的Web浏览器引擎,用于驱动Android浏览器和内嵌的web视图。

界面管理——用于管理和显示系统和多个应用程序的二维和三维图形层。

媒体库——基于PacketVideo的OpenCore,这些媒体库支持播放和录制主流的音频和视频格式,也包括静态的图像文件,如MPEG4、H.264、MP3、JPG、PNG。

系统C库——标准C系统库(libc)的BSD衍生,优化为基于嵌入式Linux设备。

(4)Android运行时(AndroidRuntime)

Android运行时是由两部分组成:

Dalvik虚拟机和Android核心类库。

其中的核心类库提供了Java语言核心库所能使用的大部分功能,包括Java对象库、网络通信、文件管理库等。

Dalvik虚拟机则是提供Android应用程序所需的运行环境,并负责动态解析执行应用、管理对象生命周期、分配空间等工作。

Dalvik虚拟机依赖于Linux内核提供基本功能,如线程和底层内存管理[15],Android运行时可使得Android设备在本质上与一个移动的Linux区分开来。

(5)硬件抽象层(HAL)

硬件抽象层(HAL,HardwareAbstractionLayer)介于Libraries和内核层中间的,是抽象出来的一层结构。

HAL存在的目的是把Linux层与Framework内核隔离开来,它使Android不会过度依赖Linux的内核,以此达到“内核独立”的目的。

是对Linux驱动的封装,对上层服务提供了统一的接口,屏蔽了底层的实现细节。

(6)LinuxKernel

Android是基于Linux2.6提供的核心系统服务,比如:

进程管理、内存管理、安全、驱动模型、网络堆栈。

LinuxKernel也作为软件和硬件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务[6]。

分层的好处就是各层各司其职,各层提供固定的SAP(ServiceAccessPoint)努力达到高内聚、低祸合[14]。

2.2Android平台上开发技术介绍

2.2.1Android四大组件

在Android系统中,开发者可是使用公共的API以提高开发软件的效率,也就是使用别人开发的一个组件,这是Android系统的一个很有优势的特性,例如,当开发者编写的程序需要一个ListView控件并且需要滚动时,如果别人已经开发此功能的组件,并且对外发布了供他人使用的组件,此时开发者可以在自己的程序中调用该组件,而不必自己再编写一个具有此功能的组件。

在需要的时候Android会启动该组件,实现你需要实现的功能。

Android应用程序从源码逻辑上可以分为四大组件,一个应用会由四大组件或者其中几个组成,四大组件分别是Activity,BroadcastReceiver,Service和ContentProvider[8][9]Error!

Referencesourcenotfound.。

1.Activity组件

顾名思义,Activity就是活动。

应用程序必须至少包含一个Activity。

Activity为用户操作提供了一个可视化的用户界面。

例如,一个Activity可用于展示应用的一个列表供用户选择,它可以是显示一些需要说明的文字与形象的图片。

一个视频播放器应用程序可以包含一个显示视频信息列表的Activity,一个播放界面的Activity。

虽然他们共同组成了一个应用,但是其中的每个Activity都和其它的保持相对的独立,每个Activity都有生命周期,Activity的生命周期如图2-2所示。

图2-2生命周期

下面对图2-2中的Activity的生命周期进行简单描述

onCreate()——当Activity第一次创建的时候调用,在这里进行程序的初始化设置,包括创建视图和绑定数据到列表等,如果有记录的状态,则此时会传入一个Activity的以前状态作为参数。

onRestart()——当Activity停止后,当被再次启动之前调用。

onStart()——当Activity刚要变为被用户所见的时候被调用。

onResume()——在Activity与用户开始交互之前被调用,在此时Activity位于堆栈的顶部,并且接受用户的输入。

onPause——当系统即将要启动另外的一个Activity时调用,该方法是用来使当前的Activity暂停,该方法在短时间内完成,下一个Activity会在该方法完成后才会继续,当调用onResume()方法后,Activity回到前台。

在调用onStop()方法后,当前的Activity变为用户不可见。

onStop()——当Activity即将为用户不可见时调用该方法,当一个Activity被销毁或者是另一个Activity回到运行状态时发生该方法的调用,调用onRestart()则是Activity再次回到前台和用户交互,调用onDestory()则是关闭当前的Activity。

onDestroy()——在销毁Activity前调用,该方法是Activity执行的最后的一个调用,这可能是发生在Activity的结束或者是由于系统的空间不足所以临时销毁该Activity。

2.Service组件

Service与Activity的主要区别在于,Service是在后台活动的,它没有用户界面。

而相同之处,它们都封装了完整的逻辑功能,Service组件一般是运行在后台,接受相关的指令,响应完成相应的事件,Android的Service与四大组件一样它的进程模型可以由开发者自由配置的,可以把该组件运行在同一进程中,或者不同的进程中。

当希望吧Service运行在和调用的组件不同的进程中的时候,则需要利用Android所提供的RPC机制,部署一套进程之间通信的策略。

(a)Service的周期

Service的生命周期相对于Activity要简单许多。

主要构成如下:

onCreate():

创建服务的函数。

onStart(Intentintent):

开启服务的函数。

onDestory():

销毁服务的函数。

(b)Service的两种类型

i.本地服务(LocalService):

使用于应用程序的内部。

ii.远程服务(RemoteSrevice):

适用于Android系统内部的应用之间。

本地服务用于实现应用程序本身执行的一些耗时任务,但是并不占用应用程序Activity的线程,而是自己单独开线程后台执行,用户体验较好。

远程服务可以被其他的应用程序调用,因此其他的应用程序不用再写该服务,直接调用即可。

(c)Service的两种使用方式

i.服务启动并运行,直到它自己停止或人为将其停止,在该种方式下通过调用Context.startService()启动服务,通过调用Context.stopService()结束服务它可以通过调用Service.stopSelfResult()或Service.stopSelf()来自己停止。

不管调用了几次startService()方法,只需要调用一次stopService()就可以停止服务。

ii.服务可以自己定义接口,然后对自己定义出来的接口进行操作。

通过调用ontext.bindService()方法建立,通过调用Context.unbindService()关闭。

允许多个客户端绑定至同一个服务。

如果服务此时还没能加载,bindService()方法会先加载它。

3.ContentProvider(内容提供者)

Android平台内置了一套SQLite数据储存机制,并且包含一系列管理SQLiteDatabase的相关方法。

在应用程序中,通过Contentproviders访问数据库。

每个Contentprovider都定义了一系列的相应方法用于访问它对应的数据库。

应用程序在新建数据库时也可以定义相应的Contentprovider用于向其他应用程序共享数据。

一般情况下,应用程序不直接调用Contentprovider定义的函数,而是通过ContentResolver间接调用。

我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问[5]。

这样设计的好处是一个ContentResolver可以访问任何的Contentprovider,统一了接口。

4.BoardcastReceiver(广播接收者)

广播接收器是用于接收广播消息通知,然后做出相应的处理,很多的广播是来于系统。

例如,时间的改变、电量过低、网络的改变、用户语言的改变等。

应用程序也可以发送广播,例如,通知用户,某些软件可以更新。

2.2.2组件之间的调用

在Android中除了有定义良好的组件,怎样把各个组件完美地组合在一起是有一定难度的。

在Android中,Intent(意图),是连接各个组件的桥梁,是各个组件实现相互调用的重要方法。

各个组件通过声明一个或多个IntentFilter来告诉Android自己可以响应、处理哪些Intent请求。

每个IntentFilter描述该组件意图接收何种类型的请求,以及什么类型的数据。

下面将介绍Intent和IntentFilter以及他们实现组件之间的调用过程。

1.Intent(意图)

(1)显式意图:

在代码中通过名字直接指明目标组件,通常情况下该组件名是不会被其他的应用开发者所了解的,所以这种意图典型被用作应用的内部消息。

如,一个Activity启动一个相应的服务。

(2)隐式意图:

在代码中不命名目标组件。

隐式意图通常用来激活其他的应用程序组件。

Android通过传递一个显式意图给一个指定目标,意图对象(Intent)中的组件的唯一的名称确定了什么组件应该来接收这个意图,而对于隐式意图则有不同的策略,当没有指定目标的情况时,Android系统需找到最适合的组件来处理这个意图或者服务来执行这个请求。

该方法是通过比较意图过滤器和意图对象,过滤器提示一个组件具备的能力和限定它能处理的意图。

他们使组件接收隐式意图成为可能。

当一个组件没有意图过滤器,则他只能接收显式的意图,如果该组件带有意图过滤器,那么就可以同时接收显式和隐式的意图。

2.IntentFilter

组件将意图(Intent)传递给系统核心层,然后Android系统从AndroidManifest.xml中的IntentFilter里面读取组件能接受的Intent,接着隐式意图通过Intent的动作、数据以及类别和IntentFilter进行比较,如有其中的一方面不匹配,则Android都不会把该隐式Intent传递给目标组件。

3.Intent传递的实现

下面介绍Activity的组件实现传递Intent的过程,如图2-3所示

ContextStartActivity

Instrumentation

ExecStartActivity

ActivityManagerService

PackageManagerService

图2-3Intent传递示意图

Intent的传递从ContextStart(Intent)开始,调用者通过传入构造好的Intent对象,然后通过执行者Instrumentation对象来完成。

执行者是整个的管理者,主要管理应用内所有的Activity的生命周期,ExecStart

是它的一个隐藏的方法,其作用就是根据Intent启动Activity的。

它做的最重要的事情就是通过RPC的方式将此调用传递给ActivityManagerService。

完成相关操作分为两

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

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2