基于Android的在线播放器系统的设计与实现
文章结构:
1 引言
1.1系统的研究背景
现在的时代是互联网的时代,互联网高速发展的同时,无线网络也接入了互联网。社会的各个领域都已经被无线网络渗透。小的比如手机,电脑,电视。大的比如灯光系统,智能家居系统。
随着网络的发展,现在的手机也已经不是原来的键盘手机,各种各样的智能手机随处可见。不只是手机的模样与原来差别巨大。手机的功能与以前的也是天差地别。无论什么样的环境手机都能满足我们的要求。比如学习有疑惑时可以随时百度。无聊时可以听歌或者玩玩游戏消遣。
以前的手机是诺基亚的天下。手机系统主要是塞班系统。诺基亚和塞班系统已经退出了时代的潮流。现在手机主要是Android和ios操作系统。
Android发展迅速的原因主要是完全开源。和ios的封闭系统相比,Android可以更加方便的获取,也注定Android会风靡全球。
手机硬件行业更新换代越来越快,手机软件行业也发展神速。所以基于Android的app的功能和作用也越来越丰富,越来越全面。于是基于Android的在线音乐播放平台应运而生。
1.2研究目的和意义
浪费时间就是慢性自杀。21世纪是科技飞速进步的时代,时间就显得格外的重要。珍惜时间就要利用好零碎的时间。比如出远门的时候在车上想要听听音乐打发一下时间。但是pc端的音乐并不适合应用到手机上。而且手机的内存容量也有限。我们也不可能做到随时都带着mp4。更不可能随时随地带着电脑。
现在的时代是飞速进步的时代,随着生活节奏的加快,人们对时间也越来越重视。但是时间的总量是有限的,我们只能够利用好那些零碎的时间,在尽可能短的时间里做更多的事情。想要做更多的事情就需要随时携带者各种各样的工具。于是手机--一件我们贴身携带的工具就有了它开发的价值。层出不穷的app
鱼跃而出。但是PC端的音乐并不适合应用到手机上,而且手机内存容量有限。我们又不可能随身携带MP4之类的播放器在身边。
目前普遍使用的电脑都是Windows和Linux。想要的流行的音乐播放器也大都是基于这两种平台。但是播放器在这几种操作系统上面使用又需要通过很多的协议。
1.3国内外研究现状
Xmms,RealPlayer,Xmovie,QuickTime,Mplayer都是以前经常使用的播放器。
1.X—Window系统是被普遍接受的一款电脑操作系统,在这个系统上配备了Xmms播放器。Xmms自带的可以对少数的视频,音频多媒体文件进行播放。但是这并不能满足用户的要求。所以开发人员又开发出了很多的插件。通过这些插件Xmms可以支持更多格式的多媒体文件播放。
2.在电视的节目播放中经常用到Xmovie。电视节目的要求一般都比较简单,只需要最基本的功能就行。正好Xmovie的播放界面也十分简单。使用Xmovie进行播放时只能看到最基本的快进,快退和播放键。Xmovie的的功能和界面一样也是比较简单,主要是控制播放的画面和一些环境变量。有些人可能会认为Xmovie既然是用作电视播放那么应该不能只播放音频,其实不然Xmovie不仅可以播放图片,视频,还可以播放mp3音频。
3.在低带宽下传输时RealPlayer可以降低传输的数据损失。同时在对流媒体进行在线播放时,RealPlayer也可以保持稳定快速的传输。RealPlayer 在linux和window平台下都有发布而且为了让用户使用起来更加的方便。开发人员故意将界面都设置的基本一致。在后期对RealPlayer的更新中为了使RealPlayer更加的普及,又增加了新的功能。不仅可以播放微软的视频,音频文件。还增加了对便携式接口。
4.QuickTime主要是针对流媒体文件进行设计。QuickTime主要分为文件格式,媒体抽象,内置媒体服务三个模块。QuickTime在使用时有一款专门支持它的同名播放器QuickTime。在播放时QuickTime的文件名后缀通常是.mov
5.Mplayer作为一款专业的电影播放器,它自然可以播放大多数视频文件。它普遍在linux上被使用。一方面Mplayer作为一款本地解码器他可以播放电影,而且不是某几种格式的电影,它可以播放SVCD,DVD等格式的电影,它还可以播放OGG,VOB等文件。另一方面Mplayer作为一款播放器他可以在各种条件下面工作。
Xmms、Xmovie、QuickTime等播放器虽然功能强大但是只能满足某些固定的格式的传输协议。但是在现在这个多样化的社会播放器也趋于多样化。这些播放器已经不再适合我们。随着消费者群体的日益增大,各种各样的视频,音频格式也越来越多,用户的需求也变得越来越大。原来的播放器已经不再适应当前的社会群体。如何可以让播放器尽可能多的播放音频和视频是现在的研究方向。而且考虑到以后还会出现别的格式,所以还要保留当前播放器的可拓展性。同时除了这些之外用户的体验也十分重要,怎么样在现有的基础上让功能更全面也是一大重点。
本文主要研究了一款基于Android的在线音乐播放器系统的开发与实现。在系统的设计与实现中,将系统主要分为了一个模块:播放控制模块,音乐的分类模块,音乐的查找模块,用户列表模块,音乐的下载模块。
本文的主要内容有:
第一章收集了Android技术现在在国内外的发展情况以及开发这个系统的意义
第二章大概的介绍了一下Android相关的技术,以及环境的搭建
第三章从几个不同的方面对系统进行了需求分析和可行性分析
第四章介绍了系统的模块的划分和模块的功能
第五章对上一章的模块就行了更加详细的设计。
第六章介绍了系统的各个模块实现过程
第七章介绍了在系统实现后,系统测试中的一些方法和测试过程
2 Android开发技术介绍
2007年在全世界范围内发生了一件事情,一个联盟组织成立了。这些组织包括全球各地的很多公司。他们只有一个目标就是为了让移动电话更加的快捷方便。Android手机从生产开发到销售有着一套完整的流程。每个流程都有着很多家公司。现在负责各个流程的众多公司之中,都有着一部分已经加入了这个联盟组织。而且越往后这个联盟将越来越庞大。这个组织就是开放手持设备联盟(Open Handset Alliance)。而Android就是这个联盟的产物。在不久的未来,相信Android必定可以站在智能手机的巅峰
那时候科技不发达所有能够用的开发工具就只是一些SDK发行版。可以就是用这些简陋的设备,花了一年的时间,开发出了G1。几乎是在发行G1的同时,最早的sdk被公诸于世。从此开始Android越来越被人关注。各种用于Android这个平台的应用程序也如同雨后春笋一样纷纷冒出头。
谷歌公司为了提升Android的知名度,也为了刺激应用程序的发展,举办了两届安卓开发挑战的比赛。在G1出现之后,各种五花八门的应用程序越来越多。,所以Google又发布了Android的应用程序交易市场。通过交易市场可以让用户看到别人开发的应用程序,并且碰到自己喜欢的应用程序之后,还可以通过这个交易市场将应用程序下载到自己的手机里面。
应用程序要想在完美的运行需要很多的组件共同的工作。其中两个重要的组件,那就是vm虚拟机和java编程语言。需要注意的是,人们提到vm,通常第一时间想到的都是jvm,虽然两者都是虚拟机,但其本质确实天差地别。jvm代表的是java虚拟机。这里的vm表示的是dvm,dvm是Android技术开发中的dalivk虚拟机。应用程序想要运行起来,前提条件就是创建对象。dvm的作用就是创建这个对象
图2-1
一个应用程序是有很多个零件组合而成的。这些零件被称之为组件。这些组件共同工作才能让应用程序有条不紊的工作。这些组件中最重要的集中主要是活动,服务,内容提供程序,广播接收器这几种组件:
活动:用户可以看到的都是属于可视 UI ,这些UI想要实现就必须依赖于动作的产生。产生动作的情况有两种,第一种是当用户想用运行某个程序时在主屏幕点击这个应用程序,另外一种是手机根据需要自动选择某个程序。
服务:服务应用在所有的运行时间很长的程序之中,例如控制应用程序更新的程序。
内容提供程序:内容提供程序主要在大型的应用程序中使用广泛。任何一款大型的应用程序都需要内容提供程序,内容服务程序就好比是数据库中的一个服务器。在大型的应用程序中时刻进行着数据的传输。内容提供程序就可以很好的帮助数据进行传输。
广播接收器:程序的运行中最重要的部分就是数据集的传输。任何Android应用程序都需要处理庞大的数据集。广播接收器在应用程序中扮演的角色就是数据的处理者。可是要是认为广播接收器的作用仅仅只是处理数据那就错了。他还可以对一个事件做出响应。
用户在下载Android的应用程序时,会同时下载一个.xml的配置文件 文件。这个文件里面主要是安装这款应用程序是所需要的一些配置信息。在应用程序安装的时候,会首先加载配置文件里面的配置信息。配置文件主要包含安装应用程序需要的类名以及所安装的应用程序可以处理的事件。还有必不可少的许可证明。例如,在网络上搜索下载资料的时候,首先manifest 文件的内部会自动的获取和下载这
些资料相关的各种许可,然后会把这些许可罗列出来。大部分的应用程序都会支持这个许可。这种许可的工作机制主要是为了防止用户不小心下载了恶意的应用程序的时候,应用程序会对设备造成损害。
2.3 Eclipse上Android环境的搭建
1991年sun公司的技术人员开发出了一款新型的语言Oak。也就是java的前身,在经过了十多年的发展之后在2009年由Oracle公司收购。被收购之后想要下载jdk就需要到官方网站去进行下载。
第二步:配置Windows上JDK的变量环境 。
右键我的电脑—》属性—》高级系统设置—》环境变量
图2-2
安装jdk只是第一步,紧接着的是环境变量配置。配置环境变量主要分为三个部分。
JAVA_HOME
JAVA_HOME属性是电脑里面没有的。所以要用户自己添加一个新的JAVA_HOME变量。将jdk安装完成后在电脑里面的路径作为变量值。
Path
和前面的JAVA_HOME属性不同,Path属性是电脑里面本来就存在的。打开之后就能直接进行编辑。
CLASSPATH
java程序在编译通过之后会产生.class文件。CLASSPATH的作用就是让java的运行环境可以更加准确快速的找到.class文件。
在变量值之前需要加上一个“.”表示当前目录,在执行java程序时会用到很多的包,这时就会根据环境变量里面的路径去找这些包,这样的目的,就是告诉给机器这些包的位置。
第三步: Eclipse开发工具的下载与安装 。
Eclipse是一个集成的开发环境,不需要用户进行安装,下载完成后直接找到eclipse的.exe文件即可打开。
第四步:Android SDK 工具的下载与安装。
开发人员可以从Android SDK中获取sdk提供的一些基本库和tools工具。
sdk工具可以在谷歌的官网进行下载。
图2-3
第五步:为Eclipse安装ADT插件。
选择eclipse—》help—》install new software
点击add打开添加的对话框,点击achive添加ADT压缩包。
图2-4
2.4 OpenCore多媒体框架简介
在使用Android平台进行多媒体开发时。用的最多的就是OpenCore。OpenCore里面包括了接口的继承,功能的封装还有系统的移植。
OpenCore这个框架,主要由两个重要的部分组成:
PVPlayer:PVPlayer可以控制各种视频,音频的播放和回放。
PVAuthor:PVAuthor主要是记录播放的视频流和音频流。同时也可以记录静态的图像。
PVPlayer和PVAuthor一般都会放在软件开发工具包里面。开发者可以下载这种工具包,开发人员可以在软件开发工具包的基础上创建各种各样的多媒体应用程序。比如在手机里面经常会用到的各种播放器,出外游玩时必不可少的照相机等等。
了解OpenCore可以从它的几个层次上面着手,通过这些层次可以很好的了解到OpenCore的整体架构
图2-5
OSCL:OSCL的全称是操作系统兼容库。当应用程序在不同的手机上运行和不同的应用程序一起运行时需要考虑到程序的兼容性。OSCL就是为了让应用程序可以更好的在不同的操作系统上面运行。OSCL之所以可以完成这一项艰巨的任务是因为他本身就包含了一些系统底层基本的操作。同时还包括了一些基本内容。
PVMF:PVMF的全称是PV多媒体框架。在PVMF下面有一个NODE组件。NODE虽然只是一个组件,但是在使用OpenCore时可以通过这个组件来实现一个特定的功能。
这里只是简单的介绍这几个组件,其实,了解了之后就会发现OpenCore中的内容远远不止这些。:从播放的角度,PVPlayer即可以被当作接收器又可以被看成输出设备。当他是接收时接收的是文件,当他被看成是输出设备时,不仅可以输出的音频流还可以输出视频流,因为PVPlayer包含了对音频视频的控制,解码等功能还包含了对文件的解析。因为用户除了从本地播放外还需要联网播放。所以PVPlayer还包含了RTSP实时流协议。
从媒体流记录的方面看,因为PVAuthor的功能主要是通过手机摄像头和麦克风等设备对音频视频和图片进行记录,接受这些输入之后它会将流的同步还有视频流和音频流的编码文件一起形成一个文件并进行输出。
3 系统可行性分析与需求分析
3.1可行性分析
在进行可行性分析之前先要了解用户的需求。然后要对开发系统做一个调研保证可以完成用户的需求。最后在了解了用户的需求和对开发系统有了一定得了解后,对新技术的开发从经济,技术,操作等方面进行分析。
3.1.1技术可行性
本系统主要是在Android平台上进行开发。相比ios,Android的六大优势为Android提供了很好的技术支持。
1、Android价格占优 价廉性能并不低
大部分的消费者购买商品时一般都会首先看价格。都希望可以花最少的钱买最好的货。苹果手机虽好,但是价格却是Android的好几倍。苹果就像是一些高端的化妆品,大家都想要去试试效果,但是由于昂贵的价格又只能打消这个念头。而有一些很平常的化妆品到处都可以买到,价格也不贵,甚至有的效果可以和那些高端的相媲美。Android就好比这种平常的化妆品可以带给用户全方位的良好体验。
有的时候手机的价格与性能并不一定成正比。人们购物时都希望能够能够买到物美价廉的商品,Android手机就是这种性价比非常高的类型。用过苹果手机的人都会觉得苹果使用起来特别复杂,虽然有着很多的功能但是大部分都是平时生活中用不到的多余的功能。相比之下Android手机使用起来简单方便,甚至有的Android在外观甚至是功能上都和苹果差别不大。使用起来时触摸效果有可能会更好。一台好的iphone价格要上万,而大多数的人都负担不起这个价格,相比之下Android最好的也不过就几千。而且在手机性能和使用的手感来看并不会输给iphone。
2、应用程序发展迅速
原来的手机都是那种最普通的手机只能拨打电话和接听电话。相比之下现在的手机已经不叫手机,而是被称之为智能手机。在前面加上的智能两个字也足以说明了现在手机功能的强大。现在人们的手机上都是装载着密密麻麻的各种app。智能手机可以在手机市场上这么流行和这方面也有密不可分的关系。虽然安卓的应用程序在数量上比苹果的多,但是在质量上还是无法和苹果商店的应用程序相比。虽然在质量上比不上ios,但是在数量上是ios望尘莫及的。例如同样的时间,安卓开发的应用程序数量可能是苹果的十倍。而且安卓的应用程序的数量还在增长。如此可见在以后Android还是可以和ios相抗衡。
在下载app方面,苹果如果想要下载一款app必须经过层层繁琐的验证。有些app甚至在苹果的应用商店里面根本都没有发布。而Android可以随心所欲的下载自己喜欢的应用。只要能找到的都可以下载。
3、众多手机厂家的支持
苹果从硬件到软件再到推广方式都是以自我为中心。而且短期内这种以自我为中心的方法也取得了很好的成效。在这一个封闭的空间里面,尽管苹果不停地在创新,但是最终还是被这个空间所禁锢。短期内出于新鲜感消费者可能会得到很大的满足。但是这样对长期发展并不有利。
目前,市场上比较流行的一些Android厂家,比如三星,华为,魅族等都已经建立了自己的品牌特点。而且还推出系列手机。不仅如此,其中有很多比如三星还与谷歌建立了技术平台开发。
在这几家大型厂商的带领下,加入这个联盟的厂家络绎不绝。随之带来的就是手机品牌越来越多。给用户的选择也就更多,在相互的竞争之下Android势必会变得越来越好。
4、运营商的鼎力支持
在国内,移动,联通,电信也赶上了Android潮流。相继推出各种手机大优惠。此外,在美国,德国,意大利,日本,法国等国家同样也有着一大批这个阵营的志愿者。如此庞大的用户群体的支持不仅仅证明了Android的可靠,而且也加快了Android在全世界范围内的普及。
Android的联盟与苹果的仅此一家形成了鲜明的对比。虽然苹果特有的封闭独立可以让它有一定的优势,但是同时对苹果的厂商和运营商也是一个威胁。
5、众多的机型和优质的配置
在Android市场激烈的竞争中,各大厂家在Android手机中都加入的属于自己的元素,形成了属于自己的Android手机品牌。各种各种形状,各种性能,各种黑科技数不胜数。
三星,华为,魅族,vivo,oppo等品牌的多样化势必会推动手机的多样化。这些手机品牌一直积极打造属于自己的品牌,也加入了很多黑科技,极大的满足了用户的体验。相比之下苹果一直都是封闭。
因为苹果系统的封闭,苹果的创新都是来自于内部的创新。而Android平台的开源为技术人员提供了方便。每个第三方都可以在原有的Android系统上增加自己的软硬件设施,在多次的修改之下,Android已经焕然一新。
相比苹果的封闭,Android的开源给开发人员提供了最大程度上的自由。开发人员可以随心所欲的开发创新,让Android的发展越来越快。
文档下载:CSDN
基于Android的在线播放器系统的设计与实现的更多相关文章
- 最简单的基于FFmpeg的移动端样例附件:Android 自带播放器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- Android流媒体开发之路三:基于NDK开发Android平台RTSP播放器
基于NDK开发Android平台RTSP播放器 最近做了不少android端的开发,有推流.播放.直播.对讲等各种应用,做了RTMP.RTSP.HTTP-FLV.自定义等各种协议,还是有不少收获和心得 ...
- 基于FFMPEG的跨平台播放器实现
基于FFMPEG的跨平台播放器实现 一.背景介绍 FFmpeg是一款超级强大的开源多媒体编解码框架,提供了录制.转换以及流化音视频的完整解决方案,包含了libavcodec.libavformat等多 ...
- 基于ffmpeg的C++播放器1
基于ffmpeg的C++播放器 (1) 2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最 ...
- 基于FFMPEG的跨平台播放器实现(二)
基于FFMPEG的跨平台播放器实现(二) 上一节讲到了在Android平台下采用FFmpeg+surface组合打造播放器的方法,这一节讲一下Windows平台FFmpeg + D3D.Linux平台 ...
- 基于jQuery虾米音乐播放器样式代码
分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div c ...
- Android——简单音乐播放器
使用MediaPlayer做的简单音乐播放器,更多内容请到百度经验查看 http://jingyan.baidu.com/article/60ccbceb63452364cab197f1.html ...
- 基于Stm32的MP3播放器设计与实现
原创博文,转载请注明出处 这是我高级电子技术试验课做的作业,拿来共享一下.项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程.当然用的板子也是安福莱的板子,因为算起来总共做了 ...
- 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)
代码下载:http://download.csdn.net/detail/qq316293804/6409417 昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常 ...
随机推荐
- 小白的linux笔记2:关于进程的基本操作
1.ps命令查看进程.ps -aux查看所有进程.可以用grep提取相关的部分进程,如只看python有关的:ps -aux |grep python. 进程状态:R运行中,T暂停,S休眠静止. 和进 ...
- #6499. 「雅礼集训 2018 Day2」颜色 [分块,倍增,bitset]
bitset压位,因为是颜色数,直接倍增,重合部分不管,没了. // powered by c++11 // by Isaunoya #include <bits/stdc++.h> #d ...
- CF594D REQ [离线+树状数组,欧拉函数]
设 \[x = \prod_{i=1}^{cnt} p_i^{k_i} [p_i\in prime]\] 那么显然 \[\varphi(x) = x*\frac{1} {\prod_{i=1}^{cn ...
- 「BZOJ3065」带插入区间K小值 [分块]
考虑分块,每个块都是用 链表 维护的,并保证 \(size\) 和分块相当. 我们考虑一下怎么去查询,很显然,可以对值域分块,单点修改,记录前缀和,完全ojbk了,对每个块维护一个 \(pre , p ...
- cf1131D
题意:总共有n+m个点,每一个点都有一个val,给出一个n*m的矩阵,矩阵中第i行第j列的为=,表示 i 点 和 j+n个点的值相等,<表示i 点比j+n个点的值小,> 刚好相反 要求用最 ...
- TC SRM556 OldBridges
题意 有一个包含\(n\)个点的图,点的编号分别为\(0\)到\(n-1\).有若干双向边连接两个点,有些边可以经过无限次,有些边最多只能经过(双向)两次.Alice计划从\(a1\)到\(a2\)进 ...
- Auto-scaling scikit-learn with Apache Spark
来源:https://databricks.com/blog/2016/02/08/auto-scaling-scikit-learn-with-apache-spark.html Data scie ...
- Gitee Git bash VSCode操作简易说明
GIT Git是一个分布式的版本控制系统,只是软件,需要你下载装到电脑上,实现git功能. Github.Gitee基于git的项目托管平台.Github是国外的,连接速度因人而异:另外Github收 ...
- SURF特征检测
SERF(speed up robust feature )特征的关键特性: 特征检测 尺度空间:缩放到不同的大小或分辨率仍能检测 选择不变性:光照不变,旋转不变 特征向量:描述为一个特征向量 DDN ...
- vue动画&过渡整理